私は現在Python 2.6を使用しています。私は 'マスター' csvファイルを読み取って、2番目のcsvファイルのエントリーをマスターと照合して妥当性を判断するスクリプトを書く必要があります。マスターとセカンダリのcsvファイルには、それぞれ同じ値の同じ数の列があります。私は、セカンダリcsvファイルの各エントリをループし、マスタcsvのすべてのエントリと照合しようとしています。セカンダリcsvファイルの指定されたエントリがマスタcsvのエントリのいずれかと一致する場合、そのエントリは有効とみなされます。Pythonでマスターcsvファイルに基づいてcsvのエントリを検証する
ID_A,ColumnB,ID_C,ColumnD
1,text,0,words
1,text,1,words
2,text,A,words
3,text,CC,words
「ID」の値は、検証プロセスを運転していると「列」の値が補助ある場合:
マスターcsvファイルは次のようになります。まず、このマスターCSVをメモリに入れて、セカンダリCSVのエントリとそれを比較する必要があります。これを行うために、私はcsvを辞書に読み込もうとしました。私は各行をループしましたが、実際に値を印刷する方法しか分かりませんでした。
ColumnA,ColumnB,ID_C,ID_D
text,words,160,7
text,words,250,BB
text,words,1,0
text,words,15,A
:代わりにちょうど読んで私はこのようになりますこれは、二次csvファイル内のエントリに対してそれらを比較できるようにメモリに格納する方法を把握する必要があり、これらのファイルを印刷する
with open ('master.csv') as csvfile:
masterReader = csv.DictReader(csvfile)
for row in masterReader:
print(row['ID_A'], row['ID_C'])
ID_CがマスタID_Aと比較され、ID_DがマスタID_Cと比較されます。最初にmaster-ID_Aに対してテストするのが最善であると思います。なぜなら、そこに一致するものがなければ、master-ID_Cに対してテストするのは無駄だからです。
私はhereと(comparing varied CSV files in python)という別の投稿のメソッドを使ってみましたが、私が望む結果が得られないようでした。
マスターCSVを読み込み、入力ID値に基づいてセカンダリcsvのエントリを検証する2つの別々の関数を持つ1つのクラスを作成したいと思います。私はまた、スクリプトが複数のデータセットで使用できるように入力マスター(同じフォーマットで)とセカンダリcsvを変更できるようにしたい。セカンダリエントリが有効になったら、(ID_C、ID_D、有効)を見たいと思います。
私はこれが意味をなさないことを願っています。私はそれを徹夜でしてきました。ここで何かを明確にすることができたら教えてください
すばらしい答えに感謝します。私は、第2の機能を微調整する方法について質問します。セカンダリcsvを入力してすべてのエントリを検証するのではなく、単に個別の値 'ID_C'と 'ID_D'を渡したいのですが? 'def validate(self、ID_C、ID_D):keys =(ID_C、ID_D)[list(key)+ [キーのキーのself.masterのキー]を返す'? – lastLeafFallen
@lastLeafFallenシングルキーの検証方法の例を追加しました。 – niemmi
私は今実装しようとしていますが、この行に構文エラーがあります。 'self.master = {(行['ID_A']、行['ID_C'])構文エラーが "for"という単語の 'o'と 'r'の間にあることを示し続けます。どんな考え? – lastLeafFallen