我试图带两个csv文件,它们在列1中具有相同的ID号。有python查找匹配并将两列附加到匹配的行在电子表格中1.让他们在第一列寻找匹配,然后将匹配的行添加到相同的ID。列表索引超出范围,并且python说谎很大CSV
spreadsheet 1
0001, beth, merda
0002, mike, john
0003, mary, smith
表格2
0001, url, owner
0003, url, owner
0002, url, owner
修正后
0001, beth, merda, url, owner
0002, mike, john, url, owner
0003, mary, smith, url, owner
目前我得到一个错误:
File "payments.py", line 10, in <module>
if row[0] in first: # row[0] = clearing solution id
IndexError: list index out of range
如果我运行 print(len(first)
它说190.所以我不知所措
import csv
#create a dict from first csv, with clearing solution id as key
with open("WEEKLY DDS PAYMENT UPLOADS 3-30-15--4-3-15 (1).csv", "r") as f:
first = {rows[0]: rows[1:] for rows in list(csv.reader(f))}
# compare second csv and append rank
with open("report1428344317924.csv", "r") as f:
for row in csv.reader(f):
if row[0] in first: # row[0] = clearing solution id
first[row[0]].append(row[1]) # row[1] = rank
# convert dict back to list
merged = [(k,) + tuple(v) for k, v in first.items()]
# write list to output csv
with open('output.csv', "w") as f:
csv.writer(f).writerows(merged)
在'if row [0]'之前放置'print row'语句来查看'row'变量中真正的内容。 (提示:这不是有任何索引访问元素)。 –
错误可能是由于您的csv文件中有空行 - 是否删除了空行?你可以在'csv.reader(f):'行中的行之后用'print row'来测试。 – vikramls