我在 Python 方面的经验有限,所以我一直在使用其他 StackOverflow 问题/答案来指导我的脚本,主要是这个:Python:比较两个 CSV 文件并搜索相似的项目和这个:如何在 python 中删除行 CSV
I我正在尝试从两个单独的 csv 中匹配 ID,每个 csv 看起来大致如下:
ID trip date location
1 1 1/1/2009 384
1 2 1/3/2009 384
1 3 1/7/2009 467
2 1 1/2/2009 842
2 2 1/3/2009 362
我正在尝试根据每个 ID 的行程进行匹配,因此对于 csv1 中的 ID 1,我会查找 csv2 中所有在 2009 年 1 月 1 日从位置 384 出发的 ID,然后从该列表中查找哪些 ID 2009 年 1 月 3 日从位置 384 出发,以此类推,直到 csv2 中只有一个 ID 与 csv1 中的 ID 匹配:匹配。这是我的代码:
import csv, sys, fileinput
f1 = open('personal2009.csv', 'rb')
f2 = open('company2009.csv', 'rb')
c1 = csv.reader(f1)
c2 = csv.reader(f2)
vmslist = [row for row in c2]
matchDict = {}
ID_list = []
ID = 0
for log_row in c1:
if log_row[0] != ID:
ID = log_row[0]
matchlist = csv.writer(open("matchlist" + str(ID) + ".csv", "wb")
for vms_row in vmslist:
if vms_row[2] == log_row[2] and vms_row[3] == log_row[3]:
matchlist.writerow(vms_row)
elif log_row[0] in ID_list:
continue
else:
f = fileinput.input("matchlist" + str(ID) + ".csv", inplace=True)
w = csv.writer(sys.stdout)
for match_row in csv.reader(f):
if match_row[2] == log_row[2] and match_row[3] == log_row[3]:
w.writerow(row)
if len(list(w)) == 1:
matchDict[str(ID)] = match_row[0]
vessel_list.append(str(ID))
f1.close()
f2.close()
matchlist.close()
每当我尝试在 PythonWin 中调试或运行代码时,我都会收到错误无法运行脚本 - 语法错误 - PythonWin 页脚中的语法无效,并且光标停在行:对于 vmslist 中的 vms_row:
我没有进一步的解释或错误信息不止于此。我已经尝试重命名我的所有变量,但没有任何东西能超过这个错误,所以我不得不得出结论,我正在尝试做一些非常愚蠢的事情,我看不到它是什么。有什么想法吗?