Подтвердить что ты не робот

Как мне форматировать число с переменным числом цифр в Python?

Скажем, я хотел отобразить число 123 с переменным количеством заполненных нулей спереди.

Например, если бы я хотел отобразить его в 5 цифр, у меня бы были цифры = 5, дающие мне:

00123

Если бы я хотел отобразить его в 6 цифр, у меня были бы цифры = 6, дающие:

000123

Как я могу сделать это в Python?

4b9b3361

Ответ 1

Существует строковый метод zfill:

>>> '12344'.zfill(10)
0000012344

Он поместит левую часть строки нулями, чтобы в этом случае длина строки N (10).

Ответ 2

Если вы используете его в форматированной строке с помощью метода format(), который предпочтительнее старого формата ''%

>>> 'One hundred and twenty three with three leading zeros {0:06}.'.format(123)
'One hundred and twenty three with three leading zeros 000123.'

См
http://docs.python.org/library/stdtypes.html#str.format
http://docs.python.org/library/string.html#formatstrings

Вот пример с переменной шириной

>>> '{num:0{width}}'.format(num=123, width=6)
'000123'

Вы можете даже указать fill char как переменную

>>> '{num:{fill}{width}}'.format(num=123, fill='0', width=6)
'000123'

Ответ 3

'%0*d' % (5, 123)

Ответ 4

print "%03d" % (43)

Печать

043

Ответ 5

С введение форматированных строковых литералов ( "коротких строк" ) в Python 3.6, теперь можно получить доступ к ранее определенные переменные с более сильным синтаксисом:

>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'

Примеры, приведенные Джоном Ла Роем, можно записать в виде

In [1]: num=123
   ...: fill='0'
   ...: width=6
   ...: f'{num:{fill}{width}}'

Out[1]: '000123'

Ответ 6

Использовать форматирование строк

print '%(#)03d' % {'#': 2}
002
print '%(#)06d' % {'#': 123}
000123

Подробнее здесь: текст ссылки