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