这就是我想要做的事情:
l = 4
length = 10**l #10000
for x in xrange(length):
password = str(username)+str("%02d"%x) #but here instead of 2 i want it to be l
正如你所看到的,我想用一个我自己可以做的变量控制格式字符串 我试着这样做:
password = str(username)+str("%0"+str(l)+"d"%x)
但它给我一个错误告诉我:在字符串格式化过程中并非所有参数都被转换
答案 0 :(得分:1)
您可以使用*
格式说明符:
>>> '-%0*d' % (4, 9)
'-0009'
>>> '-%0*d' % (9, 9)
'-000000009'
根据String formatting operations documentation:
最小字段宽度(可选)。 如果指定为' *' (星号), 实际宽度是从元组的下一个元素中读取的值和 要转换的对象是在最小字段宽度和可选之后 精度。
使用str.format
替代方案:
>>> '-{:0{}}'.format(9, 4)
'-0009'
>>> '-{:0{}}'.format(9, 9)
'-000000009'