web-dev-qa-db-fra.com

Python ajouter des zéros à l'aide de str.format

Pouvez-vous afficher une valeur entière avec des zéros en tête en utilisant la fonction str.format ?

Exemple de saisie:

"{0:some_format_specifying_width_3}".format(1)
"{0:some_format_specifying_width_3}".format(10)
"{0:some_format_specifying_width_3}".format(100)

Sortie souhaitée:

"001"
"010"
"100"

Je sais que le formatage basé sur zfill et % (Par exemple, '%03d' % 5) Peut accomplir cela. Cependant, je voudrais une solution qui utilise str.format Afin de garder mon code propre et cohérent (je formate également la chaîne avec des attributs datetime) et également de développer mes connaissances de spécification de format Mini-langue .

78
butch
>>> "{0:0>3}".format(1)
'001'
>>> "{0:0>3}".format(10)
'010'
>>> "{0:0>3}".format(100)
'100'

Explication:

{0 : 0 > 3}
 │   │ │ │
 │   │ │ └─ Width of 3
 │   │ └─ Align Right
 │   └─ Fill with '0'
 └─ Element index
187
Andrew Clark

Dérivé de exemples de format, exemples d'imbrication dans le Python docs:

>>> '{0:0{width}}'.format(5, width=3)
'005'
23
msw