我对一些代码感到困扰。我正在通过添加一个列并调用分隔符来读取CSV文件。
这一切都很完美。
但是,对于我想在名称中提供的列,我遇到了问题。
当我添加列时,我想填写名称:l_panoramic_000000,我想继续给它编号,但在6位数内。像这样:
一些例子(当然是编号低谷,但是对于示例有一些例子)。 l_panoramic_000000 l_panoramic_000001 l_panoramic_000010 l_panoramic_009523
-
现在它就像: l_panoramic_0000001 l_panoramic_0000002 l_panoramic_0000004 l_panoramic_00000010 l_panoramic_000000125 l_panoramic_0000002568 等
如何修复它以保持6位数?
for incsv in folder_in.iterdir():
outcsv = folder_out.joinpath('0new'+incsv.name)
with open(str(incsv), 'rb') as input, open(str(outcsv), 'wb') as output:
reader = csv.reader(input, delimiter = ',')
writer = csv.writer(output, delimiter = ';')
all = []
row = next(reader)
row.insert(0, 'L_panoramic')
all.append(row)
for k, row in enumerate(reader):
all.append(['l_panoramic_000000'+str(k+0)] + row)
writer.writerows(all)
使用代码:
for k, row in enumerate(reader):
all.append(['l_panoramic_'+str.format(k+'06')] + row)
writer.writerows(all)
它给了我:
File "C:/code/convert/ConvertImageTrigger.py", line 20, in <module>
all.append(['l_panoramic_'+str.format(k+'06')] + row)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
答案 0 :(得分:0)
您正尝试对字符串执行额外的数学运算:
all.append(['l_panoramic_%s' % str(1000000 + k).replace('1', '', 1) + row)
答案 1 :(得分:0)
您可以使用内置format()
功能,例如:
'l_panoramic_' + format(k, '06')
将k
填充0
,宽度为6
或者,您可以将str.format()
与类似的格式字符串一起使用:
'l_panoramic_{:06}'.format(k)