我正在我的程序中编写一个将数据写入文件的四个循环。我想要将输出格式化如下
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。
答案 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'