Leukste manier om nullen aan een string toe te voegen

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?

Oplossing

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

String opmaak documentatie.

Commentaren (8)

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.

Commentaren (10)
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.

Commentaren (1)