'How do I format a number with a variable number of digits in Python?
Say I wanted to display the number 123 with a variable number of padded zeroes on the front.
For example, if I wanted to display it in 5 digits I would have digits = 5 giving me:
00123
If I wanted to display it in 6 digits I would have digits = 6 giving:
000123
How would I do this in Python?
Solution 1:[1]
There is a string method called zfill:
>>> '12344'.zfill(10)
0000012344
It will pad the left side of the string with zeros to make the string length N (10 in this case).
Solution 2:[2]
If you are using it in a formatted string with the format() method which is preferred over the older style ''% formatting
>>> 'One hundred and twenty three with three leading zeros {0:06}.'.format(123)
'One hundred and twenty three with three leading zeros 000123.'
See
http://docs.python.org/library/stdtypes.html#str.format
http://docs.python.org/library/string.html#formatstrings
Here is an example with variable width
>>> '{num:0{width}}'.format(num=123, width=6)
'000123'
You can even specify the fill char as a variable
>>> '{num:{fill}{width}}'.format(num=123, fill='0', width=6)
'000123'
Solution 3:[3]
'%0*d' % (5, 123)
Solution 4:[4]
With the introduction of formatted string literals ("f-strings" for short) in Python 3.6, it is now possible to access previously defined variables with a briefer syntax:
>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'
The examples given by John La Rooy can be written as
In [1]: num=123
...: fill='0'
...: width=6
...: f'{num:{fill}{width}}'
Out[1]: '000123'
Solution 5:[5]
For those who want to do the same thing with python 3.6+ and f-Strings this is the solution.
width = 20
py, vg = "Python", "Very Good"
print(f"{py:>{width}s} : {vg:>{width}s}")
Solution 6:[6]
print "%03d" % (43)
Prints
043
Solution 7:[7]
Use string formatting
print '%(#)03d' % {'#': 2}
002
print '%(#)06d' % {'#': 123}
000123
More info here: link text
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Donald Miner |
| Solution 2 | |
| Solution 3 | Ignacio Vazquez-Abrams |
| Solution 4 | joelostblom |
| Solution 5 | Praveen Kulkarni |
| Solution 6 | st0le |
| Solution 7 | Blue Peppers |
