Bir dizeye sıfır eklemenin en güzel yolu

Sayısal bir dizeyi sola doğru sıfırlarla doldurmanın, yani sayısal dizenin belirli bir uzunluğa sahip olmasını sağlamanın en Pythonic yolu nedir?

Çözüm

Teller:

>>> n = '4'
>>> print(n.zfill(3))
004

Ve sayılar için:

>>> 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

Dize biçimlendirme belgeleri.

Yorumlar (8)

zfill` dışında genel dize biçimlendirmesini de kullanabilirsiniz:

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'))

string formatting](http://docs.python.org/library/string.html#string-formatting) ve f-strings için belgeler.

Yorumlar (10)
width = 10
x = 5
print "%0*d" % (width, x)
> 0000000005

Tüm heyecan verici ayrıntılar için baskı belgelerine bakın!

Python 3.x için güncelleme (7,5 yıl sonra)

Son satır artık şöyle olmalı:

print("%0*d" % (width, x))

Yani print() artık bir deyim değil, bir işlevdir. Hala Eski Okul printf() stilini tercih ettiğimi unutmayın, çünkü IMNSHO, daha iyi okunuyor ve çünkü, um, Ocak 1980'den beri bu notasyonu kullanıyorum. Bir şeyler ... eski köpekler ... bir şeyler ... yeni numaralar.

Yorumlar (1)