У мене є файл CSV users.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
мене є список ідентифікаторів користувача:
30923833
77392318
Чи є розумний, ефективний спосіб видалити всі рядки з users.csv
файлу, в якому містяться ідентифікатори toremove.txt
? Я написав простий додаток Python, щоб проаналізувати два файли і записати в новий файл лише ті рядки, в яких не знайдено toremove.txt
, але це надзвичайно повільно. Можливо , деякі sed
або awk
магія може допомогти тут?
Це бажаний результат, враховуючи наведені вище приклади:
username, userid, sidebar_side, sidebar_colour
"John Lennon", 90123412, "left", "blue"
"George Harrison", 72349482, "left", "green"
users.csv
рядків файлу, і n для рядків toremove.txt
. Я не дуже впевнений, як це зробити з меншою складністю. Суть його полягає в : for u in users: if not any(toremove in u): outputfile.write(u)
. Я можу опублікувати його в Code Review.
toremove.txt
, зберігаючи записи як ключі . Iterate users.csv, друкуючи ті, де ідентифікатор не вказаний. Ви отримуєте обробку O (n) і для toremove.txt
і users.csv
, і для O (n) використання пам'яті toremove.txt
(що, мабуть, порівняно мало)