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.