我需要操作csv文件的第一个元素(1到1000的整数),同时还要执行其他操作。
现在我有这个代码,每隔三行打印一个新行。但我也想通过用计数器替换第一个元素来操纵第一个元素,每个第三行都有一个计数器。
我的csv文件在被操作之后如何看起来今天:
1, information, info
2, info, info
, , ,
3, info, info
我希望它如何照顾它被操纵
1, info, info
2, info, info
, , ,
4, info, info
我的代码:
with open("mycsvfile.csv", 'r') as infile:
readstream = csv.reader(infile, delimiter=',')
with open("output.csv", 'wt') as output:
outwriter = csv.writer(output, delimiter=',')
i = 0
#I want to manipulate the first element of the .csv-file here
next(readstream) #to skip first row
for row in readstream:
outwriter.writerow(row)
i += 1
if i % 2 == 0:
outwriter.writerow([])
答案 0 :(得分:4)
您正在从正在阅读的文件中获取嵌套列表。列表中的项目是可变的,因此您可以使用要更改的项目的索引修改每个循环中的项目:
for row in readstream:
row[0] = i
outwriter.writerow(row)
i += 1
if i % 2 == 0:
outwriter.writerow([])
i += 1
答案 1 :(得分:0)
不确定这是否符合完整答案,但我不允许发表评论,因此请将其移至适当位置: 您想要修改行内的第一个值,那么如下所示:
if not i%3:
row = modify(row[:1]) + row[1:] # where modify is some function that returns a list with a single modified value, i.e. modify = lambda x: [x.strip()] or something
outwriter.writerow(row)