在python中以格式字符串动态计算零填充

时间:2013-08-01 21:11:22

标签: python string-formatting

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

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

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

2 个答案:

答案 0 :(得分:27)

使用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() formatting specification允许多次传递,其中替换字段可以填写格式规范的参数。

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

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

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

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

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

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

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

答案 1 :(得分:4)

是的,这是可能的

>>> print "%0*d" % (5, 4)
00004
>>> print "%0*d" % (10, 4)
0000000004