Skip to content Skip to sidebar Skip to footer

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: 0

Solution 1:

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.formathttp://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 2:

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 3:

'%0*d' % (5, 123)

Solution 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:

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}")

Post a Comment for "How Do I Format A Number With A Variable Number Of Digits In Python?"