Dado:
a = 1
b = 10
c = 100
¿Cómo visualizo un cero inicial para todos los números con menos de dos dígitos?
Esta es la salida que espero:
01
10
100
python
integer
string-formatting
ashchristopher
fuente
fuente
x = "%02d.txt" % i
plantea TypeError (no puede concatenar objetos 'str' e 'int'), perox = "%02d.txt" % (i,)
no lo hace. Interesante. Me pregunto dónde está documentado%
formateador de cuerdas.Puedes usar
str.zfill
:huellas dactilares:
fuente
"{1:02d}"
que no puede tener variables en lugar de2
(como si está creando una función dinámica).En Python 2.6+ y 3.0+, usaría el
format()
método de cadena:o usando el incorporado (para un solo número):
Consulte la documentación de PEP-3101 para conocer las nuevas funciones de formateo.
fuente
huellas dactilares:
fuente
One zero:{0:02}, two zeros: {0:03}, ninezeros: {0:010}'.format(6)
print '{:02}'.format(1)
O esto:
print '{0:02d}'.format(1)
fuente
En Python> = 3.6 , puede hacer esto sucintamente con las nuevas cadenas f que se introdujeron utilizando:
que imprime la variable con nombre
val
con unfill
valor de0
y awidth
de2
.Para su ejemplo específico, puede hacerlo muy bien en un bucle:
que imprime:
Para obtener más información sobre las cadenas f, eche un vistazo a PEP 498 donde se introdujeron.
fuente
resultados en:
Lea más información sobre el formato de cadenas usando% en la documentación.
fuente
La forma pitónica de hacer esto:
De esta forma, la cadena original se devuelve sin cambios si su longitud es mayor que string_width. Ejemplo:
Resultados:
fuente
U otra solución.
fuente
"{0:0>2}".format(number)
, si alguien quiere nLeadingZeros voluntad que deben tener en cuenta que también puede hacer:"{0:0>{1}}".format(number, nLeadingZeros + 1)
Utilice una cadena de formato: http://docs.python.org/lib/typesseq-strings.html
Por ejemplo:
fuente
Así es como lo hago:
Básicamente, zfill toma el número de ceros iniciales que desea agregar, por lo que es fácil tomar el número más grande, convertirlo en una cadena y obtener la longitud, de esta manera:
fuente
fuente
Puedes hacer esto con cadenas f .
Esto imprimirá una longitud constante de 8 y rellenará el resto con el interlineado
0
.fuente
Utilizar:
O con el
math
módulo:fuente
El 5 es el número de dígitos totales.
Usé este enlace: http://www.datasciencemadesimple.com/add-leading-preceding-zeros-python/
fuente
Si se trata de números que tienen uno o dos dígitos:
'0'+str(number)[-2:]
o'0{0}'.format(number)[-2:]
fuente