resultado - ¿Cómo formateo un número con un número variable de dígitos en Python?
resultado con dos decimales python (6)
Digamos que quería mostrar el número 123 con un número variable de ceros rellenos en el frente.
Por ejemplo, si quisiera mostrarlo en 5 dígitos tendría dígitos = 5 dándome:
00123
Si quisiera mostrarlo en 6 dígitos, tendría dígitos = 6 dando:
000123
¿Cómo haría esto en Python?
Con la introducción de literales de cadena con formato ("f-strings" para abreviar) en Python 3.6, ahora es posible acceder a variables previamente definidas con una sintaxis más breve:
>>> name = "Fred"
>>> f"He said his name is {name}."
''He said his name is Fred.''
Los ejemplos dados por John La Rooy se pueden escribir como
In [1]: num=123
...: fill=''0''
...: width=6
...: f''{num:{fill}{width}}''
Out[1]: ''000123''
Hay un método de cadena llamado zfill:
>>> ''12344''.zfill(10)
0000012344
Rellenará el lado izquierdo de la cadena con ceros para hacer la longitud de la cadena N (10 en este caso).
Si lo está utilizando en una cadena formateada con el método format()
que se prefiere sobre el formato ''''%
format anterior
>>> ''One hundred and twenty three with three leading zeros {0:06}.''.format(123)
''One hundred and twenty three with three leading zeros 000123.''
Ver
http://docs.python.org/library/stdtypes.html#str.format
http://docs.python.org/library/string.html#formatstrings
Aquí hay un ejemplo con ancho variable
>>> ''{num:0{width}}''.format(num=123, width=6)
''000123''
Incluso puede especificar el carácter de relleno como una variable
>>> ''{num:{fill}{width}}''.format(num=123, fill=''0'', width=6)
''000123''
Usar formato de cadena
print ''%(#)03d'' % {''#'': 2}
002
print ''%(#)06d'' % {''#'': 123}
000123
Más información aquí: texto del enlace
print "%03d" % (43)
Huellas dactilares
043
''%0*d'' % (5, 123)