我在这里有一个问题:
写一个名为
computed_column
的函数,该函数将一个字符串作为参数,表示格式为<string>,<int>,<int>,<int>,<int>
的5列CSV文件的名称,并写入一个名为creation.csv
的文件,其中包含所有输入文件中的数据,但第六列包含第三列和第二列的值之和。
这是我尝试过的:
import csv
def computed_column(csvfile):
with open(csvfile,newline='') as f:
with open('creation.csv','w',newline='') as f2:
y=[]
writer = csv.writer(f2)
rows = csv.reader(f)
for row in rows:
for i in range(0,len(row[1])):
y.append(int(row[1][i]) + int(row[2][i]))
writer.writerow(row+y)
它正确地写入了原始文件,但是给我将要写入的第六列的输出错误。
答案 0 :(得分:0)
如果我正确理解了您的问题,则不需要。对于每一行,您只需要将值添加到第二行和第三列(那个行),然后将总和插入第六列。您只需要遍历每一行,然后使用row
index 来访问第二和第三列。
此外,列表y
随处理的每一行而增长(每次都会增加一列)。我认为那不是你的意图。在您的for循环中移动它,以便每行重置为一个空列表。尝试这样的事情:
def computed_column(csvfile):
with open(csvfile,newline='') as f:
with open('creation.csv','w',newline='') as f2:
writer = csv.writer(f2)
rows = csv.reader(f)
for row in rows:
y=[]
y.append(int(row[1]) + int(row[2]))
writer.writerow(row+y)