for循环中的前导/前缀0

时间:2014-09-21 04:21:50

标签: python string for-loop prefix

我正在我的程序中编写一个将数据写入文件的四个循环。我想要将输出格式化如下

frame001 + K.1
frame002 + K.2
...
frame099 + K.99
frame100 + K.100

到目前为止我正在做

for f in range(1, 100):
    file.write('frame' + str(f) + ' + K.' + str(f) + '\n')

我没有问题让K部分正确地作为K.1-K.100出现,但是我不知道如何使用前缀零/将它输出到具有适当数量的前面零的frame00F到frameFFF。

1 个答案:

答案 0 :(得分:2)

使用str.format

>>> 'frame{0:03d} + K.{0}\n'.format(1)
'frame001 + K.1\n'
>>> 'frame{0:03d} + K.{0}\n'.format(100)
'frame100 + K.100\n'

BTW,range(1, 100)不会产生100。如果您希望包含100,则应为range(1, 101)


如果您使用的是旧版本的Python(Python 2.5-),请使用% operator(字符串格式化运算符)(需要指定多个参数,而不是str.format

>>> 'frame%03d + K.%d\n' % (1, 1)
'frame001 + K.1\n'
>>> 'frame%03d + K.%d\n' % (100, 100)
'frame100 + K.100\n'

如果您不想重复参数,则可以使用稍微不同的格式说明符来传递映射:

>>> 'frame%(i)03d + K.%(i)d\n' % {'i': 1}
'frame001 + K.1\n'