0

Python での私の経験は限られているので、他の StackOverflow の質問/回答を使用してスクリプトをガイドしてきました。主に次のものです: Python: Comparing two CSV files and search for similar itemsとこれ: How to Delete Rows CSV in python
Iそれぞれが大まかに次のように見える2つの別々のcsvからIDを一致させようとしています:

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 について、2009 年 1 月 1 日に場所 384 から旅行した csv2 のすべての ID を探し、そのリストからどの ID も探します。 csv1 の ID と一致する csv2 の ID が 1 つだけになるまで、2009 年 1 月 3 日に場所 384 から移動します。ここに私が持っているコードがあります:

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 でコードをデバッグまたは実行しようとすると、エラーFailed to run script - syntax error - invalid syntaxが PythonWin のフッターに表示され、カーソルが行で停止します: for vms_row in vmslist
:それよりエラー情報。すべての変数の名前を変更しようとしましたが、このエラーを超えるものはありません。そのため、信じられないほどばかげたことをしようとしていると結論付けなければならず、それが何であるかわかりません。何かご意見は?

4

2 に答える 2

1

これ:

matchlist = csv.writer(open("matchlist" + str(ID) + ".csv", "wb")

これでなければなりません(最後に括弧がありませんでした):

matchlist = csv.writer(open("matchlist" + str(ID) + ".csv", "wb"))

于 2013-07-08T16:35:48.993 に答える