ゴール
hotmail から CSV ファイルをダウンロードしましたが、多くの重複があります。これらの複製は完全なコピーであり、なぜ私の電話がそれらを作成したのかわかりません。
重複を取り除きたい。
アプローチ
重複を削除する Python スクリプトを作成します。
技術仕様
Windows XP SP3 パイソン 2.7 400 件の連絡先を含む CSV ファイル
更新: 2016
便利more_itertools
な外部ライブラリを使用したい場合:
from more_itertools import unique_everseen
with open('1.csv','r') as f, open('2.csv','w') as out_file:
out_file.writelines(unique_everseen(f))
@IcyFlame のソリューションのより効率的なバージョン
with open('1.csv','r') as in_file, open('2.csv','w') as out_file:
seen = set() # set for fast O(1) amortized lookup
for line in in_file:
if line in seen: continue # skip duplicate
seen.add(line)
out_file.write(line)
同じファイルをその場で編集するには、これを使用できます
import fileinput
seen = set() # set for fast O(1) amortized lookup
for line in fileinput.FileInput('1.csv', inplace=1):
if line in seen: continue # skip duplicate
seen.add(line)
print line, # standard output is now redirected to the file
次のスクリプトを使用できます。
前提条件:
1.csv
重複を構成するファイルです2.csv
このスクリプトが実行されると、重複がなくなる出力ファイルです。コード
inFile = open('1.csv','r')
outFile = open('2.csv','w')
listLines = []
for line in inFile:
if line in listLines:
continue
else:
outFile.write(line)
listLines.append(line)
outFile.close()
inFile.close()
アルゴリズム説明
ここで、私がやっていることは次のとおりです。