Dado:número Display con ceros a la izquierda
a = 1
b = 10
c = 100
Quiero mostrar un cero para todos los números con menos de 2 dígitos, es decir:
01
10
100
Dado:número Display con ceros a la izquierda
a = 1
b = 10
c = 100
Quiero mostrar un cero para todos los números con menos de 2 dígitos, es decir:
01
10
100
Aquí son:
print "%02d" % (1,)
Básicamente % es como printf
o sprint
.
Ejemplo: imprimir "% 05d"% result ['postalCode'] para un código postal de 5 dígitos. –
'x ="% 02d.txt "% i' provoca TypeError (no se puede concatenar los objetos 'str' e 'int'), pero' x = "% 02d.txt"% (i,) 'no. Interesante. Me pregunto dónde está eso documentado – theta
@theta En 2.7.6, no me sale un error. ¿Tal vez esto fue un error en una versión específica de Python que han solucionado desde entonces? –
x = [1, 10, 100]
for i in x:
print '%02d' % i
resultados:
01
10
100
Lea more information about string formatting using % en la documentación.
El ejemplo de la documentación apesta. Lanzan el mapeo con la muestra cero inicial, por lo que es difícil saber cuál es, a menos que ya sepas cómo funciona. Eso es lo que me trajo aquí, en realidad. – Grant
utilizar una cadena de formato - http://docs.python.org/lib/typesseq-strings.html
Por ejemplo:
python -c 'print "%(num)02d" % {"num":5}'
En Python 2.6+ y 3.0+, se utiliza el método format()
cadena:
for i in (1, 10, 100):
print('{num:02d}'.format(num=i))
o el uso de la incorporado (para un solo número):
print(format(i, '02d'))
Consulte la documentación de PEP-3101 para las nuevas funciones de formateo.
Funciona también en Python 2.7.5. También puede usar el formato '{: 02d}'. (1) si no desea usar argumentos con nombre. –
Funciona bien en 2.7.2, con un punto flotante "{0: 04.0f}". El formato (1.1) da 0001 (: 04 = al menos 4 caracteres, en este caso liderando 0's, .0f = punto flotante sin decimales) Soy consciente del formato% pero quería modificar una declaración .format existente sin reescribir la cosa * whole *. ¡Gracias! –
Puede utilizar zfill:
print str(1).zfill(2)
print str(10).zfill(2)
print str(100).zfill(2)
impresiones:
01
10
100
Me gusta esta solución, ya que ayuda no solo al dar salida al número, sino también cuando debe asignarlo a una variable ... p. x = str (datetime.date.today(). month) .zfill (2) devolverá x como '02' para el mes de feb. – EroSan
O esto:
print '{0:02d}'.format(1)
La forma de hacer esto Pythonic:
str(number).rjust(string_width, fill_char)
De esta manera, la cadena original se devuelve sin cambios si su longitud es mayor que string_width. Ejemplo:
a = [1, 10, 100]
for num in a:
print str(num).rjust(2, '0')
Resultados:
01
10
100
¡Magia de pitón! Gran respuesta – SAAD
excelentes soluciones !!! –
print('{:02}'.format(1))
print('{:02}'.format(10))
print('{:02}'.format(100))
grabados:
01
10
100
De esta manera le permite repetir el argumento varias veces dentro de la cadena: 'Un cero: {0:02}, dos ceros: {0:03}, ninezeros: {0: 010} '. Formato (6)' – srodriguex
Solo compatible con Python 3. Si usa Python 2.7, haga 'print '{: 02}'. format (1)' – Blairg23
width = 5
num = 3
formatted = (width - len(str(num))) * "0" + str(num)
print formatted
u otra solución.
"{:0>2}".format(number)
Está más claro, gracias. – Zety
Esta sería la forma de Python, aunque incluiría el parámetro para mayor claridad - '" {0: 0> 2} ".formato (número) ', si alguien quiere nLeadingZeros deberían tener en cuenta que también pueden hacer:' "{0: 0> {1}}". format (number, nLeadingZeros + 1) ' –
Si se trata de números que son uno o dos dígitos:
'0'+str(number)[-2:]
o '0{0}'.format(number)[-2:]
En Python 3.6, se puede hacer esto de manera sucinta con f
-strings mediante el uso de:
f'{val:02}'
que imprime la variable con el nombre val
con un fill
valor de 0
y width
de 2
.
Para su ejemplo específico puede hacerlo muy bien en un bucle:
a, b, c = 1, 10, 100
for val in {a, b, c}:
print(f'{val:02}')
que imprime:
01
10
100
duplicado: http://stackoverflow.com/questions/733454/best-way -to-format-integer-as-string-with-leading-zeros – darkgaze
Supongo que la pregunta vinculada debe ser el duplicado de esto (en términos de votos, calidad de respuestas y edad) – TheEspinosa