python string trailing chomp leading-zero

python - ¿Cómo eliminar los ceros iniciales y finales en una cadena? Pitón



string trailing (5)

¿Has probado con strip() :

listOfNum = [''231512-n'',''1209123100000-n00000'',''alphanumeric0000'', ''alphanumeric''] print [item.strip(''0'') for item in listOfNum] >>> [''231512-n'', ''1209123100000-n'', ''alphanumeric'', ''alphanumeric'']

Tengo varias cadenas alfanuméricas como estas

listOfNum = [''000231512-n'',''1209123100000-n00000'',''alphanumeric0000'', ''000alphanumeric'']

El resultado deseado para eliminar ceros finales sería:

listOfNum = [''000231512-n'',''1209123100000-n'',''alphanumeric'', ''000alphanumeric'']

El resultado deseado para los principales ceros finales sería:

listOfNum = [''231512-n'',''1209123100000-n00000'',''alphanumeric0000'', ''alphanumeric'']

El resultado deseado para eliminar los ceros iniciales y finales sería:

listOfNum = [''231512-n'',''1209123100000-n00000'',''alphanumeric0000'', ''alphanumeric'']

Por ahora lo he estado haciendo de la siguiente manera, por favor sugiera una mejor manera si hay:

listOfNum = [''000231512-n'',''1209123100000-n00000'',''alphanumeric0000'', / ''000alphanumeric''] trailingremoved = [] leadingremoved = [] bothremoved = [] # Remove trailing for i in listOfNum: while i[-1] == "0": i = i[:-1] trailingremoved.append(i) # Remove leading for i in listOfNum: while i[0] == "0": i = i[1:] leadingremoved.append(i) # Remove both for i in listOfNum: while i[0] == "0": i = i[1:] while i[-1] == "0": i = i[:-1] bothremoved.append(i)


¿Qué pasa con un básico

your_string.strip("0")

para eliminar los ceros al final y al final? Si solo está interesado en eliminar ceros al final, use .rstrip en .rstrip lugar (y .lstrip solo para los principales).

[Más información en el doc ]

Puede usar una lista de comprensión para obtener las secuencias que desee así:

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]


Quitar el + de salida + ''final'':

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

Eliminar el ''0'' inicial:

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

Eliminar el ''0'' posterior:

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


Simplemente puede hacer esto con un bool:

if int(number) == float(number): number = int(number) else: number = float(number)


strip es el mejor enfoque para esta situación, pero more_itertools.strip es una solución general que more_itertools.strip y finales de un iterable:

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'']

Observe que aquí eliminamos los "0" iniciales y finales entre otros elementos que satisfacen un predicado. Esta herramienta no está limitada a cadenas. more_itertools.strip para más ejemplos.