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
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
Respuestas:
En Python 2 (y Python 3) puedes hacer:
print "%02d" % (1,)
Básicamente % es como printf
o sprintf
(ver documentos ).
Para Python 3. +, el mismo comportamiento también se puede lograr con format
:
print("{:02d}".format(1))
Para Python 3.6+, se puede lograr el mismo comportamiento con las cadenas f :
print(f"{1:02d}")
x = "%02d.txt" % i
plantea TypeError (no puede concatenar objetos 'str' e 'int'), pero x = "%02d.txt" % (i,)
no lo hace. Interesante. Me pregunto dónde está documentado
%
formateador de cuerdas.
Puedes usar str.zfill
:
print(str(1).zfill(2))
print(str(10).zfill(2))
print(str(100).zfill(2))
huellas dactilares:
01
10
100
"{1:02d}"
que no puede tener variables en lugar de 2
(como si está creando una función dinámica).
En Python 2.6+ y 3.0+, usaría el format()
método de cadena:
for i in (1, 10, 100):
print('{num:02d}'.format(num=i))
o usando el incorporado (para un solo número):
print(format(i, '02d'))
Consulte la documentación de PEP-3101 para conocer las nuevas funciones de formateo.
print('{:02}'.format(1))
print('{:02}'.format(10))
print('{:02}'.format(100))
huellas dactilares:
01
10
100
One zero:{0:02}, two zeros: {0:03}, ninezeros: {0:010}'.format(6)
print '{:02}'.format(1)
En Python> = 3.6 , puede hacer esto sucintamente con las nuevas cadenas f que se introdujeron utilizando:
f'{val:02}'
que imprime la variable con nombre val
con un fill
valor de 0
y a 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
Para obtener más información sobre las cadenas f, eche un vistazo a PEP 498 donde se introdujeron.
x = [1, 10, 100]
for i in x:
print '%02d' % i
resultados en:
01
10
100
Lea más información sobre el formato de cadenas usando% en la documentación.
U otra solución.
"{:0>2}".format(number)
"{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:
python -c 'print "%(num)02d" % {"num":5}'
Así es como lo hago:
str(1).zfill(len(str(total)))
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:
Python 3.6.5 (predeterminado, 11 de mayo de 2018, 04:00:52) [CCG 8.1.0] en Linux Escriba "ayuda", "derechos de autor", "créditos" o "licencia" para obtener más información. >>> total = 100 >>> print (str (1) .zfill (len (str (total)))) 001 >>> total = 1000 >>> print (str (1) .zfill (len (str (total)))) 0001 >>> total = 10000 >>> print (str (1) .zfill (len (str (total)))) 00001 >>>
Puedes hacer esto con cadenas f .
import numpy as np
print(f'{np.random.choice([1, 124, 13566]):0>8}')
Esto imprimirá una longitud constante de 8 y rellenará el resto con el interlineado 0
.
00000001
00000124
00013566
df['Col1']=df['Col1'].apply(lambda x: '{0:0>5}'.format(x))
El 5 es el número de dígitos totales.
Usé este enlace: http://www.datasciencemadesimple.com/add-leading-preceding-zeros-python/