Saya memiliki file CSV users.csvdengan 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.txtsaya punya daftar ID pengguna:
30923833
77392318
Apakah ada cara pintar dan efisien untuk menghapus semua baris dari users.csvfile 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 sedatau awksihir 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.csvfile, 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.txtdan users.csv, dan O (n) penggunaan memori untuk toremove.txt(yang mungkin relatif kecil)