In Python, How to Specify a Format When Converting Int to String? [Duplicate]

In Python, how do I specify a format when converting int to string?

More precisely, I want my format to add leading zeros to have a string with constant length. For example, if the constant length is set to 4:

  • 1 would be converted into "0001"
  • 12 would be converted into "0012"
  • 165 would be converted into "0165"

I have no constraint on the behaviour when the integer is greater than what can allow the given length (9999 in my example).

How can I do that in Python?

1

"%04d" where the 4 is the constant length will do what you described.

You can read about string formatting here.

Update for Python 3:

{:04d} is the equivalent for strings using the str.format method or format builtin function. See the format specification mini-language documentation.

0

You could use the zfill function of str class. Like so -

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

One could also do %04d etc. like the others have suggested. But I thought this is more pythonic way of doing this...

With python3 format and the new 3.6 formatted string literals f"":

>>> i = 5
>>> "{:4n}".format(i)
'   5'
>>> "{:04n}".format(i)
'0005'
>>> f"{i:4n}"
'   5'
>>> f"{i:04n}" 
'0005'

Try formatted string printing:

print "%04d" % 1 Outputs 0001

Use the percentage (%) operator:

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

Documentation is over here

The advantage in using % instead of zfill() is that you parse values into a string in a more legible way:

>>> 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
Chloe Bennett

Chloe Bennett

Culture, Media & Entertainment Columnist

Chloe Bennett explores the intersection of pop culture, streaming entertainment, digital trends, and contemporary lifestyle. Her weekly commentary reaches thousands of culture enthusiasts.

Share this article
Twitter Facebook Pinterest