¿Cuál es la forma más pitónica de rellenar una cadena numérica con ceros a la izquierda, es decir, para que la cadena numérica tenga una longitud determinada?
Cuerdas:
>>> n = '4'
>>> print(n.zfill(3))
004
Y para los números:
>>> n = 4
>>> print('%03d' % n)
004
>>> print(format(n, '03')) # python >= 2.6
004
>>> print('{0:03d}'.format(n)) # python >= 2.6 + python 3
004
>>> print('{foo:03d}'.format(foo=n)) # python >= 2.6 + python 3
004
>>> print('{:03d}'.format(n)) # python >= 2.7 + python3
004
>>> print(f'{n:03}') # python >= 3.6
004
Además de zfill
, puede utilizar el formato general de las cadenas:
print(f'{number:05d}') # (since Python 3.6), or
print('{:05d}'.format(number)) # or
print('{0:05d}'.format(number)) # or (explicit 0th positional arg. selection)
print('{n:05d}'.format(n=number)) # or (explicit `n` keyword arg. selection)
print(format(number, '05d'))
Documentación de formato de cadena y cadenas-f.
width = 10
x = 5
print "%0*d" % (width, x)
> 0000000005
Consulte la documentación de impresión para conocer todos los detalles interesantes.
Actualización para Python 3.x (7.5 años después)
La última línea debería ser ahora:
print("%0*d" % (width, x))
Es decir, print()
es ahora una función, no una declaración. Tenga en cuenta que todavía prefiero el estilo de la vieja escuela printf()
porque, IMNSHO, se lee mejor, y porque, um, he estado usando esa notación desde enero de 1980. Algo... perros viejos... algo algo... nuevos trucos.