2013-06-14 2 views
69

Можете ли вы отобразить целочисленное значение с ведущими нулями с помощью функции str.format?Python add leading zeroes using str.format

Пример входных данных:

"{0:some_format_specifying_width_3}".format(1) 
"{0:some_format_specifying_width_3}".format(10) 
"{0:some_format_specifying_width_3}".format(100) 

Желаемый выход:

"001" 
"010" 
"100" 

Я знаю, что оба zfill и % основанное форматирование (например, '%03d' % 5) может достичь этого. Тем не менее, я хотел бы использовать решение, которое использует str.format, чтобы мой код был чистым и последовательным (я также форматировал строку с атрибутами datetime), а также расширял свои знания о Format Specification Mini-Language.

+1

являются 'max_width',' a', 'b' и' c' имена переменных или Ваш ввод строки? –

+0

Это лишь некоторые примеры имен переменных. 'max_width' использовался для примера, чтобы указать, сколько ведущих нулей потребуется для значений примера. В моем фактическом коде вход в формат включает в себя объект datetime и некоторые int, которые я хотел бы форматировать с помощью ведущих нулей. – butch

+0

, так что вам нужен 1-лайнер с 'format' или функцией, которая ничего не использует, кроме raw python? –

ответ

152
>>> "{0:0>3}".format(1) 
'001' 
>>> "{0:0>3}".format(10) 
'010' 
>>> "{0:0>3}".format(100) 
'100' 

Объяснение:

{0 : 0 > 3} 
│ │ │ │ 
│ │ │ └─ Width of 3 
│ │ └─ Align Right 
│ └─ Fill with '0' 
└─ Element index 
+0

Ах, я думаю, что мои примеры были интерпретированы слишком буквально. Я просто хочу формат, который делает '' {0: some_format_specifying_width_four} ". Format (10)' произвести '' 0010 "'. – butch

+1

Я обновил свои оригинальные примеры, чтобы обеспечить большую ясность – butch

+1

Отредактировал свой ответ. –

19

производный от Format examples, Nesting examples в документации Python:

>>> '{0:0{width}}'.format(5, width=3) 
'005' 
+0

Отлично! Я принимаю ответ @ F.J, поскольку я предпочитаю не указывать другую переменную ширины, хотя этот ответ кажется очень pythonic в своей ясности! – butch

+0

Это произойдет, когда вы отредактируете вопрос после его ответа. Я рад, что мы могли бы помочь вам прояснить ваши намерения. – msw