Wat is de meest Pythonische manier om een numerieke reeks met nullen naar links op te vullen, zodat de numerieke reeks een bepaalde lengte heeft?
Snaren:
>>> n = '4'
>>> print(n.zfill(3))
004
En voor getallen:
>>> 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
Naast zfill
, kun je ook algemene string formatting gebruiken:
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'))
Documentatie voor string formatting en f-strings.
width = 10
x = 5
print "%0*d" % (width, x)
> 0000000005
Zie de afdrukdocumentatie voor alle spannende details!
Bijgewerkt voor Python 3.x (7,5 jaar later)
Die laatste regel zou nu moeten zijn:
print("%0*d" % (width, x))
D.w.z. print()
is nu een functie, geen statement. Merk op dat ik nog steeds de voorkeur geef aan de oude school printf()
stijl omdat, IMNSHO, het beter leest, en omdat, eh, ik'die notatie al gebruik sinds januari 1980. Iets ... oude honden ... iets ... nieuwe trucs.