【发布时间】:2017-02-06 21:21:31
【问题描述】:
我正在尝试附加列标题(硬编码)并将列值从列表附加到现有的 csv。我没有得到想要的结果。
方法 1 是在现有 csv 文件上附加结果。方法 2 将现有 csv 的副本克隆到 temp.csv 中。这两种方法都没有得到我想要的输出。在结果 1 中,它只是附加在最后一行单元格之后。在结果 2 中,所有列表值都附加在每一行上。预期的结果是我正在寻找的。
我在下面包含了我的代码。感谢任何输入或指导。
现有的 CSV Test.csv
Type,Id,TypeId,CalcValues
B,111K,111Kequity(long) 111K,116.211768
C,111N,B(long) 111N,0.106559957
B,111J,c(long) 111J,20.061634
代码 - 方法 1 和 2
final_results = ['0.1065599566767107', '0.0038113334533441123', '20.061623176440904']
# Method1
csvfile = "test.csv"
with open(csvfile, "a") as output:
writer = csv.writer(output, lineterminator='\n')
for val in final_results:
writer.writerow([val])
# Method2
with open("test.csv", 'rb') as input, open('temp.csv', 'wb') as output:
reader = csv.reader(input, delimiter = ',')
writer = csv.writer(output, delimiter = ',')
all = []
row = next(reader)
row.insert(5, 'Results')
all.append(row)
for row in reader:
for i in final_results:
print type(i)
row.insert(5, i)
all.append(row)
writer.writerows(all)
方法 1 的结果
Type,Id,TypeId,CalcValues
B,111K,111Kequity(long) 111K,116.211768
C,111N,B(long) 111N,0.106559957
B,111J,c(long) 111J,20.0616340.1065599566767107
0.0038113334533441123
20.061623176440904
方法 2 的结果
Type,Id,TypeId,CalcValues,Results
B,111K,111Kequity(long) 111K,116.211768,0.1065599566767107,20.061623176440904,0.0038113334533441123
C,111N,B(long) 111N,0.106559957,0.1065599566767107,20.061623176440904,0.0038113334533441123
B,111J,c(long) 111J,20.061634,0.1065599566767107,20.061623176440904,0.0038113334533441123
预期结果
Type,Id,TypeId,CalcValues,ID
B,111K,111Kequity(long) 111K,116.211768,0.1065599566767107
C,111N,B(long) 111N,0.106559957,20.061623176440904
B,111J,c(long) 111J,20.061634,0.0038113334533441123
【问题讨论】:
-
忘了提及,因为我仅限于使用 csv 阅读器或内置 python 库。谢谢。
-
好问题,但值似乎错误:final_results 似乎与预期输入的顺序不同。并且
Result列已转向ID。可以编辑吗?
标签: python list loops csv parsing