How to remove leading and trailing zeros in a string? Python

后端 未结 6 1979
庸人自扰
庸人自扰 2020-11-28 06:42

I have several alphanumeric strings like these

listOfNum = [\'000231512-n\',\'1209123100000-n00000\',\'alphanumeric0000\', \'000alphanumeric\']
相关标签:
6条回答
  • 2020-11-28 07:10

    Assuming you have other data types (and not only string) in your list try this. This removes trailing and leading zeros from strings and leaves other data types untouched. This also handles the special case s = '0'

    e.g

    a = ['001', '200', 'akdl00', 200, 100, '0']
    
    b = [(lambda x: x.strip('0') if isinstance(x,str) and len(x) != 1 else x)(x) for x in a]
    
    b
    >>>['1', '2', 'akdl', 200, 100, '0']
    
    
    0 讨论(0)
  • 2020-11-28 07:12

    You can simply do this with a bool:

    if int(number) == float(number):
    
       number = int(number)
    
    else:
    
       number = float(number)
    
    0 讨论(0)
  • 2020-11-28 07:16

    Remove leading + trailing '0':

    list = [i.strip('0') for i in listOfNum ]
    

    Remove leading '0':

    list = [ i.lstrip('0') for i in listOfNum ]
    

    Remove trailing '0':

    list = [ i.rstrip('0') for i in listOfNum ]
    
    0 讨论(0)
  • 2020-11-28 07:21

    Did you try with strip() :

    listOfNum = ['231512-n','1209123100000-n00000','alphanumeric0000', 'alphanumeric']
    print [item.strip('0') for item in listOfNum]
    
    >>> ['231512-n', '1209123100000-n', 'alphanumeric', 'alphanumeric']
    
    0 讨论(0)
  • 2020-11-28 07:21

    str.strip is the best approach for this situation, but more_itertools.strip is also a general solution that strips both leading and trailing elements from an iterable:

    Code

    import more_itertools as mit
    
    
    iterables = ["231512-n\n","  12091231000-n00000","alphanum0000", "00alphanum"]
    pred = lambda x: x in {"0", "\n", " "}
    list("".join(mit.strip(i, pred)) for i in iterables)
    # ['231512-n', '12091231000-n', 'alphanum', 'alphanum']
    

    Details

    Notice, here we strip both leading and trailing "0"s among other elements that satisfy a predicate. This tool is not limited to strings.

    See also docs for more examples of

    • more_itertools.strip: strip both ends
    • more_itertools.lstrip: strip the left end
    • more_itertools.rstrip: strip the right end

    more_itertools is a third-party library installable via > pip install more_itertools.

    0 讨论(0)
  • 2020-11-28 07:22

    What about a basic

    your_string.strip("0")
    

    to remove both trailing and leading zeros ? If you're only interested in removing trailing zeros, use .rstrip instead (and .lstrip for only the leading ones).

    [More info in the doc.]

    You could use some list comprehension to get the sequences you want like so:

    trailing_removed = [s.rstrip("0") for s in listOfNum]
    leading_removed = [s.lstrip("0") for s in listOfNum]
    both_removed = [s.strip("0") for s in listOfNum]
    
    0 讨论(0)
提交回复
热议问题