texto str numeros lower letras imprimir formato flotantes español convertir caracteres python integer string-formatting

numeros - str en python



Mostrar número con ceros iniciales (16)

Aquí estás:

print "%02d" % (1,)

Básicamente % es como printf o sprintf .

Dado:

a = 1 b = 10 c = 100

¿Cómo muestro un cero inicial para todos los números con menos de dos dígitos?

Es decir,

01 10 100


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 (default, May 11 2018, 04:00:52) [GCC 8.1.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> 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 >>>


Basándome en tus consejos, dejo mi función de trabajo. Gracias.

def number2binlist(number, leading = 8): #Convert Binary to 0/1 list array with leading zeros, default 8 bin2dec = int(str(bin(number))[2:]) theformat = "{:0"+str(leading)+"d}" dec2str = list(theformat.format(bin2dec)) output = [int(z) for z in dec2str] output.reverse() return output


En Python> = 3.6 , puedes hacer esto de manera sucinta con las nuevas cadenas de caracteres que se introdujeron utilizando:

f''{val:02}''

que imprime la variable con nombre val con un valor de fill de 0 y un width de 2 .

Para su ejemplo específico, puede hacer esto 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 de caracteres, eche un vistazo a PEP 498 que las introdujo.


En Python 2.6+ y 3.0+, usarías el método de cadena format() :

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 formato.


La forma pitónica de hacer esto:

str(number).rjust(string_width, fill_char)

De esta manera, la cadena original se devuelve sin cambios si su longitud es mayor que string_width. Ejemplo:

a = [1, 10, 100] for num in a: print str(num).rjust(2, ''0'')

Resultados:

01 10 100


O esto:

print ''{0:02d}''.format(1)


O otra solución.

"{:0>2}".format(number)


Puedes usar str.zfill :

print str(1).zfill(2) print str(10).zfill(2) print str(100).zfill(2)

huellas dactilares:

01 10 100


Si se trata de números que tienen uno o dos dígitos:

''0''+str(number)[-2:] o ''0{0}''.format(number)[-2:]



Utilizar:

''00''[len(str(i)):] + str(i)

O con el módulo de math :

import math ''00''[math.ceil(math.log(i, 10)):] + str(i)


print(''{:02}''.format(1)) print(''{:02}''.format(10)) print(''{:02}''.format(100))

huellas dactilares:

01 10 100


s=1 s="%02d"%s print(s)

el resultado será 01


width = 5 num = 3 formatted = (width - len(str(num))) * "0" + str(num) print formatted