¿La mejor manera de formatear un número entero como una cadena con ceros a la izquierda? [duplicar]

Resuelto ramusus asked hace 15 años • 10 respuestas

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?

ramusus avatar Apr 09 '09 16:04 ramusus
Aceptado

Puedes usar el zfill()método para rellenar una cadena con ceros:

In [3]: str(1).zfill(2)
Out[3]: '01'
 avatar Apr 09 '2009 09:04

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

user518450 avatar Dec 17 '2012 18:12 user518450

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.

SergioAraujo avatar Mar 02 '2017 17:03 SergioAraujo

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'
SilentGhost avatar Apr 09 '2009 09:04 SilentGhost

Python 2.6 permite esto:

add_nulls = lambda number, zero_count : "{0:0{1}d}".format(number, zero_count)

>>>add_nulls(2,3)
'002'
clorz avatar Apr 09 '2009 09:04 clorz