Saya memiliki file CSV users.csv
dengan daftar Nama pengguna, ID pengguna, dan data lainnya:
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"
Di file lain toremove.txt
saya punya daftar ID pengguna:
30923833
77392318
Apakah ada cara pintar dan efisien untuk menghapus semua baris dari users.csv
file yang berisi ID toremove.txt
? Saya telah menulis aplikasi Python sederhana untuk mem-parsing dua file dan menulis ke file baru hanya baris-baris yang tidak ditemukan toremove.txt
, tetapi ini sangat lambat. Mungkin beberapa sed
atau awk
sihir dapat membantu di sini?
Ini adalah hasil yang diinginkan, dengan mempertimbangkan contoh di atas:
username, userid, sidebar_side, sidebar_colour
"John Lennon", 90123412, "left", "blue"
"George Harrison", 72349482, "left", "green"
users.csv
file, dan n untuk baris toremove.txt
. Saya tidak begitu yakin bagaimana melakukannya dengan kompleksitas yang lebih rendah. Inti dari itu adalah: for u in users: if not any(toremove in u): outputfile.write(u)
. Saya dapat mempostingnya ke Code Review.
toremove.txt
, menyimpan entri sebagai kunci . Iterate users.csv, cetak di mana id tidak ada dalam dikt. Anda mendapatkan pemrosesan O (n) untuk keduanya toremove.txt
dan users.csv
, dan O (n) penggunaan memori untuk toremove.txt
(yang mungkin relatif kecil)