关于字符串:如何在Python中格式化具有可变位数的数字?

How do I format a number with a variable number of digits in Python?

本问题已经有最佳答案,请猛点这里访问。

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

例如,如果我想用5位数显示它,我的位数为5,给出:

1
00123

如果我想用6位数字显示它,我会用6位数字表示:

1
000123

我该如何在python中做到这一点?


如果您在格式化字符串中使用的是format()方法,它比旧式''%格式更受欢迎。

1
2
>>> '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.formathttp://docs.python.org/library/string.html格式字符串

下面是一个宽度可变的示例

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

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

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


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

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

它将用零填充字符串的左侧,使字符串长度为n(在本例中为10)。


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


在python 3.6中引入了格式化的字符串文本(简称"f-strings"),现在可以用更简洁的语法访问以前定义的变量:

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

John la Rooy给出的示例可以写成

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

Out[1]: '000123'

1
print"%03d" % (43)

印刷品

043


使用字符串格式

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

此处提供更多信息:链接文本