Disons que je voulais afficher le nombre 123 avec un nombre variable de zéros rembourrés sur le devant.
Par exemple, si je voulais l'afficher en 5 chiffres, j'aurais des chiffres = 5 me donnant:
00123
Si je voulais l'afficher en 6 chiffres, j'aurais des chiffres = 6 donnant:
000123
Comment pourrais-je faire cela en Python?
Il existe une méthode de chaîne appelée zfill:
>>> '12344'.zfill(10)
0000012344
Il remplira le côté gauche de la chaîne avec des zéros pour rendre la longueur de chaîne N (10 dans ce cas).
Si vous l'utilisez dans une chaîne formatée avec la méthode format()
qui est préférée à l'ancien style ''%
formatage
>>> 'One hundred and twenty three with three leading zeros {0:06}.'.format(123)
'One hundred and twenty three with three leading zeros 000123.'
Voir
http://docs.python.org/library/stdtypes.html#str.format
http://docs.python.org/library/string.html#formatstrings
Voici un exemple à largeur variable
>>> '{num:0{width}}'.format(num=123, width=6)
'000123'
Vous pouvez même spécifier le caractère de remplissage comme une variable
>>> '{num:{fill}{width}}'.format(num=123, fill='0', width=6)
'000123'
'%0*d' % (5, 123)
Avec l'introduction de littéraux de chaîne formatés ("f-strings" pour faire court) dans Python 3.6, il est maintenant possible d'accéder à des variables précédemment définies avec une syntaxe plus brève:
>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'
Les exemples donnés par John La Rooy peuvent être écrits comme
In [1]: num=123
...: fill='0'
...: width=6
...: f'{num:{fill}{width}}'
Out[1]: '000123'
print "%03d" % (43)
Impressions
043
Utiliser la mise en forme des chaînes
print '%(#)03d' % {'#': 2}
002
print '%(#)06d' % {'#': 123}
000123
Plus d'informations ici: texte du lien