Fixed width number formatting python 3

71,797

Solution 1

Prefix the width with a 0:

>>> '{0:03}'.format(1)
'001'

Also, you don't need the place-marker in recent versions of Python (not sure which, but at least 2.7 and 3.1):

>>> '{:03}'.format(1)
'001'

Solution 2

Better:

number=12
print(f'number is equal to {number:03d}')

Solution 3

There is built-in string method .zfill for filling 0-s:

>>> str(42).zfill(5)
'00042'
>>> str(42).zfill(2)
'42'
Share:
71,797

Related videos on Youtube

pogo
Author by

pogo

Updated on March 10, 2020

Comments

  • pogo
    pogo about 4 years

    How do I get an integer to fill 0's to a fixed width in python 3.2 using the format attribute? Example:

    a = 1
    print('{0:3}'.format(a))
    

    gives ' 1' instead of '001' I want. In python 2.x, I know that this can be done using

    print "%03d" % number. 
    

    I checked the python 3 string documentation but wasn't able to get this.

    http://docs.python.org/release/3.2/library/string.html#format-specification-mini-language

    Thanks.

  • PV8
    PV8 over 5 years
    How does this approach work for a full column, where i have 1, and 211 for example and i want to have the output 001 and 211. Thanks
  • saulspatz
    saulspatz over 3 years
    This works well in my application, where I need binary numbers: bin(42)[2:].zfill(7) gives '0101010'. I don't know how'd I'd make the other answers work.