rellenar numeros lower letras izquierda formato float español convertir con ceros caracteres cadenas python string-formatting

numeros - lower python español



¿La mejor manera de formatear un entero como una cadena con ceros iniciales? (11)

Esta pregunta ya tiene una respuesta aquí:

Necesito agregar ceros iniciales a entero para hacer 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; }

¿Hay alguna función que pueda hacer esto?


Alternativa de una sola línea al zfill .

Esta función toma x y la convierte en una cadena, y agrega ceros al principio y solo si la longitud es demasiado corta:

def zfill_alternative(x,len=4): return ( ((''0''*len)+str(x))[-l:] if len(str(x))<len else str(x) )

Para resumir: build-in: zfill es lo suficientemente bueno, pero si alguien tiene curiosidad sobre cómo implementar esto a mano, aquí hay un ejemplo más.


Esta es mi función de Python:

def add_nulls(num, cnt=2): cnt = cnt - len(str(num)) nulls = ''0'' * cnt return ''%s%s'' % (nulls, num)


La forma estándar es utilizar modificadores de cadena de formato. Estos métodos de cadena de formato 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 para conocer.

i = random.randint(0,99999) print "%05d" % i

que dará salida a una cadena de longitud 5.

Edición: En Python2.6 y superior, también hay:

print ''{0:05d}''.format(i)

Consulte: https://docs.python.org/2/library/string.html


Lo más probable es que solo necesites formatear tu entero:

''%0*d'' % (fill, your_int)

Por ejemplo,

>>> ''%0*d'' % (3, 4) ''004''


Para Python 3 y más allá: str.zfill () sigue siendo la opción más legible

Pero es una buena idea mirar el nuevo y poderoso str.format (), ¿qué pasa si quieres rellenar algo que no es 0?

# if we want to pad 22 with zeros in front, to be 5 digits in length: str_output = ''{:0>5}''.format(22) print(str_output) # >>> 00022 # {:0>5} meaning: ":0" means: pad with 0, ">" means move 22 to right most, "5" means the total length is 5 # another example for comparision str_output = ''{:#<4}''.format(11) print(str_output) # >>> 11## # to put it in a less hard-coded format: int_inputArg = 22 int_desiredLength = 5 str_output = ''{str_0:0>{str_1}}''.format(str_0=int_inputArg, str_1=int_desiredLength) print(str_output) # >>> 00022


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

In [3]: str(1).zfill(2) Out[3]: ''01''


Python 2.6 permite esto:

add_nulls = lambda number, zero_count : "{0:0{1}d}".format(number, zero_count) >>>add_nulls(2,3) ''002''


Python 3.6 f-strings nos permite agregar ceros iniciales fácilmente:

number = 5 print(f'' now we have leading zeros in {number:02d}'')

Echa un vistazo a esta buena publicación sobre.


Solo para la cultura, en PHP, tiene la función str_pad que hace exactamente el trabajo de su función add_nulls .

str_pad($int, $cnt, ''0'', STR_PAD_LEFT);


Tienes al menos dos opciones:

  • str.zfill: lambda n, cnt=2: str(n).zfill(cnt)
  • Formato % : lambda n, cnt=2: "%0*d" % (cnt, n)

Si está en Python> 2.5, vea una tercera opción en la respuesta de clorz.


Una conversión directa sería (nuevamente con una función):

def add_nulls2(int, cnt): nulls = str(int) for i in range(cnt - len(str(int))): nulls = ''0'' + nulls return nulls