Ответ 1
Вместо этого используйте str.format()
метод форматирования строк:
'{number:0{width}d}'.format(width=2, number=4)
Демо:
>>> '{number:0{width}d}'.format(width=2, number=4)
'04'
>>> '{number:0{width}d}'.format(width=8, number=4)
'00000004'
Спецификация форматирования str.format()
позволяет использовать несколько проходов, где поля замены могут заполнять параметры для спецификаций форматирования.
В приведенном выше примере спецификация ширины прошивки с жестким кодированием будет выглядеть так:
'{:02d}'.format(4)
или
'{number:02d}'.format(number=4)
с именованным параметром. Я просто заменил спецификатор ширины 2
на другое поле замены.
Чтобы получить тот же эффект при форматировании строки %
в старом стиле, вам понадобится использовать символ ширины *
:
'%0*d' % (width, number)
но это можно использовать только с кортежем значений (форматирование словарей не поддерживается) и применяется только к ширине поля; другие параметры в форматировании не поддерживают динамические параметры.