users.csv
UserNames, userIDs ve diğer verilerin bir listesini içeren bir CSV dosyası var :
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"
Başka bir dosyada kullanıcı toremove.txt
kimliklerinin bir listesi var:
30923833
77392318
users.csv
Kimlikleri içeren dosyadaki tüm satırları kaldırmanın akıllı ve etkili bir yolu var mı toremove.txt
? İki dosyayı ayrıştırmak ve yeni bir dosyaya sadece bulunmayan satırları yazmak için basit bir Python uygulaması yazdım toremove.txt
, ancak olağanüstü yavaş. Belki biraz sed
ya da awk
sihir burada yardımcı olabilir mi?
Yukarıdaki örnekler göz önünde bulundurularak istenen sonuç budur:
username, userid, sidebar_side, sidebar_colour
"John Lennon", 90123412, "left", "blue"
"George Harrison", 72349482, "left", "green"
users.csv
dosyanın satırları için n ve toremove.txt
. Daha düşük karmaşıklıkla nasıl yapılacağından emin değilim. Bunun özü şudur: for u in users: if not any(toremove in u): outputfile.write(u)
. Kod İncelemesine gönderebilirim.
toremove.txt
olarak girdilerini tasarruf tuşları . İd.içinde olmayanları yazdırarak users.csv dosyasını yineleyin. Sen her ikisi için işleme O (n) almak toremove.txt
ve users.csv
ve için O (n) bellek kullanımı toremove.txt
(muhtemelen nispeten küçük)