如何在Python中格式化具有可变位数的数字?

时间:2010-07-12 13:16:06

标签: python string string-formatting number-formatting

假设我想在前面显示带有可变数量的填充零的数字123。

例如,如果我想以5位数显示它,我会有数字= 5给我:

00123

如果我想以6位数显示,我会有数字= 6给出:

000123

我将如何在Python中执行此操作?

7 个答案:

答案 0 :(得分:154)

如果您使用format()方法在格式化字符串中使用该方法,该方法优先于旧格式''%格式

>>> 'One hundred and twenty three with three leading zeros {0:06}.'.format(123)
'One hundred and twenty three with three leading zeros 000123.'

请参阅
http://docs.python.org/library/stdtypes.html#str.format
http://docs.python.org/library/string.html#formatstrings

以下是可变宽度

的示例
>>> '{num:0{width}}'.format(num=123, width=6)
'000123'

您甚至可以将填充字符指定为变量

>>> '{num:{fill}{width}}'.format(num=123, fill='0', width=6)
'000123'

答案 1 :(得分:36)

有一个名为zfill的字符串方法:

>>> '12344'.zfill(10)
0000012344

它将用零填充字符串的左侧以使字符串长度为N(在这种情况下为10)。

答案 2 :(得分:17)

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

答案 3 :(得分:5)

print "%03d" % (43)

打印

  

043

答案 4 :(得分:5)

使用Python 3.6中的the introduction of formatted string literals(" f-strings"简称),现在可以使用更简单的语法访问以前定义的变量:

>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'

John La Rooy给出的例子可以写成

In [1]: num=123
   ...: fill='0'
   ...: width=6
   ...: f'{num:{fill}{width}}'

Out[1]: '000123'

答案 5 :(得分:5)

对于那些想使用python 3.6+和f-Strings做同样事情的人,这是解决方案。

width = 20
py, vg = "Python", "Very Good"
print(f"{py:>{width}s} : {vg:>{width}s}")

答案 6 :(得分:1)

使用字符串格式

print '%(#)03d' % {'#': 2}
002
print '%(#)06d' % {'#': 123}
000123

此处有更多信息:link text