HOWTO · Python
Eliminar ceros iniciales en una cadena de Python
Este tutorial analiza cómo eliminar los ceros iniciales en una cadena en Python
En esta página
Las cadenas de Python conservan sus caracteres exactamente, incluidos los ceros iniciales. Para eliminarlos sin dejar de tratar cada valor como una cadena, llama a lstrip("0"). Convierte el valor en un entero solo si es numérico y puedes prescindir de su formato original. Los ejemplos siguientes muestran el método directo, su aplicación a una lista y cómo elegir una alternativa.
Quita los ceros iniciales de una cadena con lstrip()
El método lstrip() devuelve una cadena nueva después de quitar caracteres por el extremo izquierdo. Al pasarle "0", se indica que elimine todos los ceros consecutivos del principio; no quita los ceros que aparecen en otras partes de la cadena. El valor original no cambia, porque las cadenas de Python son inmutables.
Ejecuta este ejemplo:
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
values = ["0001234", "01000", "1000"]
cleaned = [value.lstrip("0") for value in values]
print(cleaned)
['1234', '1000', '1000']
Por ejemplo, "0001200".lstrip("0") da "1200": los ceros que aparecen después de 12 permanecen. lstrip("0") elimina los caracteres incluidos en el conjunto indicado, no una subcadena fija al principio; úsalo cuando quieras quitar cualquier secuencia de ceros iniciales.
Aplica la operación a una lista de cadenas
La comprensión de listas anterior aplica la misma transformación de forma independiente a cada valor y conserva el orden de la lista. También devuelve cadenas, algo importante para identificadores como códigos postales, números de cuenta y otros códigos cuyo formato tiene significado. Guardar el resultado en una variable nueva mantiene disponible la lista de entrada; para reemplazar su contenido, asigna la comprensión a esa misma variable.
Usa value.lstrip("0") con cada elemento si todos los valores son cadenas y solo quieres quitar sus ceros iniciales. Si los valores proceden de un archivo u otra fuente, conviértelos en cadenas únicamente si eso concuerda con el modelo de datos; convertir valores arbitrarios puede ocultar problemas en los datos de entrada.
Elige un método según los datos
Para limpiar cadenas en casos habituales, lstrip("0") es conciso y conserva los caracteres interiores. Un bucle con startswith() y cortes de cadena es otra opción cuando la condición de eliminación requiere una lógica personalizada. La condición funciona con una cadena vacía, y repetirla elimina cada cero inicial sin alterar los ceros interiores:
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
value = "0001200"
while value.startswith("0"):
value = value[1:]
print(value)
Con esta entrada, el bucle deja "1200". Si la entrada contiene solo ceros, como "000", el resultado es una cadena vacía, de acuerdo con la regla de eliminar todos los ceros iniciales.
Para cadenas que contienen únicamente números, str(int(value)) ofrece una conversión breve. Convierte el valor en un entero y luego de nuevo en una cadena, por lo que descarta formatos como el signo más y los ceros iniciales, y no puede conservar texto no numérico. No es adecuado para identificadores ni para cadenas que quizá no representen enteros válidos. Una expresión regular como re.sub(r"^0+", "", value) puede expresar la misma coincidencia con los ceros iniciales; requiere importar re y aporta poco en este caso sencillo.
Trata las cadenas vacías y las cadenas que solo contienen ceros
Llamar a lstrip("0") con "" devuelve "". Llamarlo con "000" también devuelve "", porque se han eliminado todos los caracteres. Ese es el resultado natural de quitar todos los ceros iniciales, aunque algunas aplicaciones necesitan que un número compuesto solo por ceros siga representándose como "0". En ese caso, aplica esa regla explícitamente; por ejemplo, puedes elegir value.lstrip("0") or "0" si sabes que la entrada representa un número. No apliques este recurso indiscriminadamente a texto arbitrario, porque cambiaría el significado de un valor que originalmente estaba vacío.
Comprueba el resultado
Comprueba algunas entradas representativas y el resultado esperado para cada una: "0001234" pasa a ser "1234", "01000" pasa a ser "1000" y "1000" permanece como "1000". Antes de procesar datos reales, decide también qué espera tu aplicación para "" y "000". Si es importante conservar la semántica de cadena, verifica que los valores transformados sigan siendo cadenas y que los ceros interiores permanezcan. Estas comprobaciones ayudan a distinguir entre quitar un prefijo y convertir el valor subyacente en un número.