users.csv
userNames、userIDs、およびその他のデータのリストを含むCSVファイルがあります。
username, userid, sidebar_side, sidebar_colour
"John Lennon", 90123412, "left", "blue"
"Paul McCartny", 30923833, "left", "black"
"Ringo Starr", 77392318, "right", "blue"
"George Harrison", 72349482, "left", "green"
別のファイルtoremove.txt
には、ユーザーIDのリストがあります。
30923833
77392318
users.csv
IDを含むファイルからすべての行を削除する賢明で効率的な方法はありますtoremove.txt
か?2つのファイルを解析し、にない行のみを新しいファイルに書き込む単純なPythonアプリを作成しましたがtoremove.txt
、非常に遅いです。おそらく、いくつかsed
またはawk
魔法がここで役立ちますか?
上記の例を考慮すると、これは望ましい結果です。
username, userid, sidebar_side, sidebar_colour
"John Lennon", 90123412, "left", "blue"
"George Harrison", 72349482, "left", "green"
users.csv
ファイルの行の場合はn、の行の場合はnですtoremove.txt
。複雑さを抑えてそれを行う方法はよくわかりません。その要点は次のとおりfor u in users: if not any(toremove in u): outputfile.write(u)
です。Code Reviewに投稿できます。
toremove.txt
として、入力した内容を保存し、キー。users.csvを繰り返し、idが辞書にないものを出力します。あなたは、両方のための処理をO(n)を取得toremove.txt
してusers.csv
、およびのためのO(n)のメモリ使用量toremove.txt
(おそらく比較的小さい)