In Python, how to specify a format when converting

2020-06-02 10:29发布

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?

标签: python string
5条回答
够拽才男人
2楼-- · 2020-06-02 11:01

With python3 format notation:

>>> i = 5
>>> "{:4n}".format(i)
'   5'
>>> "{:04n}".format(i)
'0005'
查看更多
地球回转人心会变
3楼-- · 2020-06-02 11:11

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...

查看更多
仙女界的扛把子
4楼-- · 2020-06-02 11:18

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

You can read about string formatting here.

查看更多
一夜七次
5楼-- · 2020-06-02 11:18

Try formatted string printing:

print "%04d" % 1 Outputs 0001

查看更多
劫难
6楼-- · 2020-06-02 11:27

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
查看更多
登录 后发表回答