Який найбільш пітонівський спосіб доповнити числовий рядок нулями зліва, тобто так, щоб числовий рядок мав певну довжину?
Струни:
>>> 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
Крім 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-рядків.
width = 10
x = 5
print "%0*d" % (width, x)
> 0000000005
Всі цікаві подробиці дивіться в друкованій документації!
Оновлення для Python 3.x (7.5 років потому).
Цей останній рядок тепер повинен бути:
print("%0*d" % (width, x))
Тобто print()
тепер є функцією, а не оператором. Зауважте, що я все ще віддаю перевагу олдскульному стилю printf()
, тому що, IMNSHO, він читається краще, і тому що, гм, я використовую цю нотацію з січня 1980 року. Щось... старі трюки... щось щось... нові трюки.