20

所以我知道"%02d to %02d"%(i, j)在 Python 中将零填充ij.

但是,我想知道是否有任何方法可以在格式字符串中动态填零(我有一个数字列表,我希望零填充大小等于该列表中最长的数字)。

我知道我可以使用zfill,但我希望我可以用格式字符串来完成整个事情。

4

2 回答 2

36

改用str.format()字符串格式化的方法:

'{number:0{width}d}'.format(width=2, number=4)

演示:

>>> '{number:0{width}d}'.format(width=2, number=4)
'04'
>>> '{number:0{width}d}'.format(width=8, number=4)
'00000004'

str.format()格式化规范允许多次传递,其中替换字段可以填写格式化规范的参数。

在上面的示例中,硬编码的填充宽度规范如下所示:

'{:02d}'.format(4)

或者

'{number:02d}'.format(number=4)

带有命名参数。我只是2用另一个替换字段替换了宽度说明符。

要获得与旧式%字符串格式相同的效果,您需要使用*宽度字符:

'%0*d' % (width, number)

但这只能与值的元组一起使用(不支持字典格式)并且仅适用于字段宽度;格式中的其他参数不支持动态参数。

于 2013-08-01T21:13:50.150 回答
3

是的,有可能

>>> print "%0*d" % (5, 4)
00004
>>> print "%0*d" % (10, 4)
0000000004
于 2013-08-01T21:17:40.650 回答