users.csvuserNames、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.csvIDを含むファイルからすべての行を削除する賢明で効率的な方法はあります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(おそらく比較的小さい)