我正在寻找一个脚本,通过python将新数据列添加到现有的csv文件中。我有一个文件(例如file.csv),它有很多行和几列。从for(var i:int=0;i<testArray.length;i++)
{
if(testArray[i].hitTestObject(chest))
{
testArray[i].checkhit=true;
hitCount++;
/// prefrom your code.
}
}
计算,我得到了一个新数组(我的代码中的A)。我想将新数组(A)作为现有csv文件的最后一列。我使用下面的代码。
for loop
它确实附加了一个新列作为最后一列。但问题是整个列有一个相同的值(一个值形成最后一个循环)。那么,如果我想将每个for循环的A值作为我的最后一列,我该怎么办呢。谢谢。
示例输入文件
for xxx in xxxx:
A= xxx
f=open("file.csv")
data=[item for item in csv.reader(f)]
f.close()
new_column=[A]
new_data=[]
for i, item in enumerate (data):
try:
item.append (new_column[i])
except IndexError, e:
item.append(A)
new_data.append(item)
f=open('outfilefinal1.csv','w')
csv.writer(f).writerows(new_data)
f.close()
每个循环的值
1 2
2 4
0 9
4 8
所以最终文件应该显示
3
4
0
9
但在我的情况下,它显示为
1 2 3
2 4 4
0 9 0
4 8 9
答案 0 :(得分:0)
代码问题在于您在嵌套for循环中覆盖文件。
真的是一个不依赖于file.csv的数组吗?然后你可以做这样的事情:
import csv
A = compute_new_values_list()
with open('file.csv') as fpi, open('out.csv', 'w') as fpo:
reader = csv.reader(fpi)
writer = csv.writer(fpo)
#optionaly handle csv header
headers = next(reader)
headers.append('new_column')
writer.writerow(headers)
for index, row in enumerate(reader):
row.append(A[index])
writer.writerow(row)
修改强>
如果你需要一行file.csv来计算你的新值,你可以使用相同的代码,只需在for循环中计算你的新值:
import csv
with open('file.csv') as fpi, open('out.csv', 'w') as fpo:
reader = csv.reader(fpi)
writer = csv.writer(fpo)
#optionaly handle csv header
headers = next(reader)
headers.append('new_column')
writer.writerow(headers)
for row in reader:
new_value = compute_from_row(row)
row.append(new_value)
writer.writerow(row)