Най-хубавият начин за поставяне на нули в низ

Кой е най-питоничният начин за подпълване на цифров низ с нули отляво, т.е. така че цифровият низ да има определена дължина?

Решение

Струни:

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

И за числа:

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

Документация за форматиране на низове.

Коментари (8)

Освен zfill можете да използвате общо форматиране на низове:

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

Документация за форматиране на низ и f-strings.

Коментари (10)
width = 10
x = 5
print "%0*d" % (width, x)
> 0000000005

Вижте документацията за печат за всички вълнуващи подробности!

Актуализация за Python 3.x (7,5 години по-късно)

Последният ред вече трябва да бъде:

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

Т.е. print() вече е функция, а не декларация. Имайте предвид, че все още предпочитам стила на старата школа printf(), защото, IMNSHO, се чете по-добре и защото, хм, използвам този запис от януари 1980 г. Нещо ... стари кучета ... нещо нещо ... нови трикове.

Коментари (1)