2017-03-01 18 views
0

初心者の皆さんは、Pythonを使用しているので、タスクを達成するのに手助けが必要です!Python:2つのCSVファイル間で古いレコードと重複を取り除く

私は2つのcsvファイルを持っています。 old.csvとnew.csv

どちらも同じ構造(A〜Z列)を持ち、各レコードは列F(6列目)の番号である一意の識別子を持っています。これら2つのCSVの間には、重複したレコードがいくつかあります。

old.csvにあるレコードをnew.csvから削除し、同じ構造を持つ新しいファイルに出力する方法を探しています。そのため、新しいoutput.csvには本当に新しいレコード。

これを達成するにはどうすればよいでしょうか?私はコマンドラインを介してWindowsマシン上でこれを実行できる必要があります。

ご協力いただきましてありがとうございます。前もって感謝します!

+0

new.csvで重複した識別子を削除して別のファイルに出力する必要がありますか?私は正しい? –

+0

はい、正しい –

答えて

0

に追加し、その識別子ではないold.csvにあるすべての項目を追加しold.csv

from operator import itemgetter 
reader= map(itemgetter(5), reader) 

import csv 

f = open('old.csv', 'rb') 
reader = csv.reader(f) 
reader = map(tuple,reader) 

fn = open('new.csv', 'rb') 
readern = csv.reader(fn) 
readern = map(tuple,readern) 

取得し、すべての一意の識別子をタプルするcsvファイルを読み込み、それをマップ独自のリスト

unique= [item for item in readern if item[5] not in reader] 

01をoutput.csvする行を書きます
output = open("output.csv", 'wb') 
wr = csv.writer(output) 
for row in unique: 
     wr.writerow(row) 
output.close() 

これが役立ちますように!

0

単純なアプローチは次のようになります。

  • レコードがあなたのセットでNOZの識別子を持っている場合、書き込みnew.csv
  • を通じてセット
  • ループ内old.csvからすべての識別子を集めますit to output.csv

ファイルを読み書きするのに、おそらくcsvモジュールを使用します。

関連する問題