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
With python3 format and the new 3.6 f"" notation:
>>> i = 5
>>> "{:4n}".format(i)
' 5'
>>> "{:04n}".format(i)
'0005'
>>> f"{i:4n}"
' 5'
>>> f"{i:04n}"
'0005'
"%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.
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
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...