Ответ 1
Существует строковый метод zfill:
>>> '12344'.zfill(10)
0000012344
Он поместит левую часть строки нулями, чтобы в этом случае длина строки N (10).
Скажем, я хотел отобразить число 123 с переменным количеством заполненных нулей спереди.
Например, если бы я хотел отобразить его в 5 цифр, у меня бы были цифры = 5, дающие мне:
00123
Если бы я хотел отобразить его в 6 цифр, у меня были бы цифры = 6, дающие:
000123
Как я могу сделать это в Python?
Существует строковый метод zfill:
>>> '12344'.zfill(10)
0000012344
Он поместит левую часть строки нулями, чтобы в этом случае длина строки N (10).
Если вы используете его в форматированной строке с помощью метода 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'
'%0*d' % (5, 123)
print "%03d" % (43)
Печать
043
С введение форматированных строковых литералов ( "коротких строк" ) в 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'
Использовать форматирование строк
print '%(#)03d' % {'#': 2}
002
print '%(#)06d' % {'#': 123}
000123
Подробнее здесь: текст ссылки