我有一个数字,我想格式化为具有零填充和特定长度的字符串。假设如果固定长度是 22 ,我知道我可以这样做
format(variable,"%022d")
但是有什么办法可以做到这一点
length = 22
format(variable,"%0lengthd")
这意味着我需要在% variable d
表达式中使用变量
谢谢
我有一个数字,我想格式化为具有零填充和特定长度的字符串。假设如果固定长度是 22 ,我知道我可以这样做
format(variable,"%022d")
但是有什么办法可以做到这一点
length = 22
format(variable,"%0lengthd")
这意味着我需要在% variable d
表达式中使用变量
谢谢
是的,通过在内部使用字符串格式:
length = 22
format(variable,"%0{}d".format(length))
事实上,你可以通过一次调用来完成这一切str.format()
:
length = 22
"{0:{1}}".format(variable, length)
您应该str(variable).zfill(length)
为此使用:
>>> str(12345).zfill(8)
'00012345'
>>> str(12345).zfill(10)
'0000012345'
在填充零之前必须将数字转换为字符串似乎有些不直观,但是(至少在我看来)这比使用多种格式要干净得多。毕竟,既然解决方案已经内置,为什么还要拼凑解决方案呢?
甚至经典的字符串插值也支持这一点:
>>> variable = 100
>>> length = 22
>>> print "%0*d" % (length,variable)
0000000000000000000100
在这个答案中查看更多详细信息:variable length of %s with the % operator in python