В Python, как указать формат при преобразовании int в строку? - PullRequest
13 голосов
/ 28 сентября 2010

Как в Python указать формат при преобразовании int в строку?

Точнее, я хочу, чтобы в моем формате добавлялись лидирующие нули для строки с постоянной длиной. Например, если постоянная длина установлена ​​в 4:

  • 1 будет преобразовано в "0001"
  • 12 будет преобразовано в "0012"
  • 165 будет преобразовано в "0165"

У меня нет ограничений на поведение, когда целое число больше, чем допустимое для данной длины (9999 в моем примере).

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

Ответы [ 5 ]

15 голосов
/ 28 сентября 2010

"%04d", где 4 - постоянная длина, будет делать то, что вы описали.

Вы можете прочитать о форматировании строки здесь.

12 голосов
/ 28 сентября 2010

Вы можете использовать функцию zfill класса str.Примерно так:

>>> str(165).zfill(4)
'0165'

Можно также сделать %04d и т. Д., Как предлагали другие.Но я думал, что это более питонический способ сделать это ...

4 голосов
/ 28 сентября 2010

Попробуйте форматированная строковая печать :

print "%04d" % 1 Выходы 0001

3 голосов
/ 25 апреля 2018

С нотацией формата python3:

>>> i = 5
>>> "{:4n}".format(i)
'   5'
>>> "{:04n}".format(i)
'0005'
3 голосов
/ 28 сентября 2010

Используйте оператор процента (%):

>>> number = 1
>>> print("%04d") % number
0001
>>> number = 342
>>> print("%04d") % number
0342

Документация здесь

Преимущество использования % вместо zfill () состоит в том, что вы анализируете значения в строку более разборчивым способом:

>>> number = 99
>>> print("My number is %04d to which I can add 1 and get %04d") % (number, number+1)
My number is 0099 to which I can add 1 and get 0100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...