Найкращий спосіб додавання нулів до рядка

Який найбільш пітонівський спосіб доповнити числовий рядок нулями зліва, тобто так, щоб числовий рядок мав певну довжину?

Рішення

Струни:

>>> 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-рядків.

Коментарі (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)