Quelle est la manière la plus pythique de compléter une chaîne numérique avec des zéros à gauche, c'est-à-dire pour que la chaîne numérique ait une longueur spécifique ?
Cordes :
>>> n = '4'
>>> print(n.zfill(3))
004
Et pour les nombres :
>>> n = 4
>>> print('%03d' % n)
004
>>> print(format(n, '03')) # python >= 2.6
004
>>> print('{0:03d}'.format(n)) # python >= 2.6 + python 3
004
>>> print('{foo:03d}'.format(foo=n)) # python >= 2.6 + python 3
004
>>> print('{:03d}'.format(n)) # python >= 2.7 + python3
004
>>> print(f'{n:03}') # python >= 3.6
004
En plus de zfill
, vous pouvez utiliser le formatage général des chaînes de caractères :
print(f'{number:05d}') # (since Python 3.6), or
print('{:05d}'.format(number)) # or
print('{0:05d}'.format(number)) # or (explicit 0th positional arg. selection)
print('{n:05d}'.format(n=number)) # or (explicit `n` keyword arg. selection)
print(format(number, '05d'))
Documentation pour string formatting et f-strings.
width = 10
x = 5
print "%0*d" % (width, x)
> 0000000005
Voir la documentation sur l'impression pour tous les détails passionnants !
Mise à jour pour Python 3.x (7.5 ans plus tard)
Cette dernière ligne devrait maintenant être :
print("%0*d" % (width, x))
C'est-à-dire que print()
est maintenant une fonction, et non une instruction. Notez que je préfère toujours le style de la vieille école printf()
parce que, IMNSHO, il se lit mieux, et parce que, um, j'utilise cette notation depuis janvier 1980. Quelque chose ... de vieux chiens ... quelque chose quelque chose ... de nouveaux tours.