所以我知道"%02d to %02d"%(i, j)
在 Python 中将零填充i
和j
.
但是,我想知道是否有任何方法可以在格式字符串中动态填零(我有一个数字列表,我希望零填充大小等于该列表中最长的数字)。
我知道我可以使用zfill
,但我希望我可以用格式字符串来完成整个事情。
所以我知道"%02d to %02d"%(i, j)
在 Python 中将零填充i
和j
.
但是,我想知道是否有任何方法可以在格式字符串中动态填零(我有一个数字列表,我希望零填充大小等于该列表中最长的数字)。
我知道我可以使用zfill
,但我希望我可以用格式字符串来完成整个事情。
改用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)
但这只能与值的元组一起使用(不支持字典格式)并且仅适用于字段宽度;格式中的其他参数不支持动态参数。
是的,有可能
>>> print "%0*d" % (5, 4)
00004
>>> print "%0*d" % (10, 4)
0000000004