所以我知道Python中的"%02d to %02d"%(i, j)
将填充i
和j
。
但是,我想知道是否有任何方法可以在格式字符串中动态归零(我有一个数字列表,我希望零填充大小等于该列表中最长的数字)。
我知道我可以使用zfill
,但我希望我能用格式字符串完成整个事情。
答案 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