¿La mejor manera de formatear un número entero como una cadena con ceros a la izquierda? [duplicar]
Necesito agregar ceros a la izquierda al número entero para crear una cadena con una cantidad definida de dígitos ($cnt). Cuál es la mejor manera de traducir esta sencilla función de PHP a Python:
function add_nulls($int, $cnt=2) {
$int = intval($int);
for($i=0; $i<($cnt-strlen($int)); $i++)
$nulls .= '0';
return $nulls.$int;
}
¿Existe alguna función que pueda hacer esto?
Puedes usar el zfill()
método para rellenar una cadena con ceros:
In [3]: str(1).zfill(2)
Out[3]: '01'
La forma estándar es utilizar modificadores de cadena de formato. Estos métodos de formato de cadena están disponibles en la mayoría de los lenguajes de programación (a través de la función sprintf en c, por ejemplo) y son una herramienta útil que debe conocer.
Para generar una cadena de longitud 5:
... en Python 3.5 y superior: f-strings.
i = random.randint(0, 99999)
print(f'{i:05d}')
Busque cuerdas f aquí para obtener más detalles.
... Python 2.6 y superior:
print '{0:05d}'.format(i)
... antes de Python 2.6:
print "%05d" % i
Ver: https://docs.python.org/3/library/string.html
Python 3.6 f-strings nos permite agregar ceros a la izquierda fácilmente:
number = 5
print(f' now we have leading zeros in {number:02d}')
Eche un vistazo a esta buena publicación sobre esta característica.
Lo más probable es que sólo necesites formatear tu número entero:
'%0*d' % (fill, your_int)
Por ejemplo,
>>> '%0*d' % (3, 4)
'004'
Python 2.6 permite esto:
add_nulls = lambda number, zero_count : "{0:0{1}d}".format(number, zero_count)
>>>add_nulls(2,3)
'002'