У меня есть CSV-файл users.csv
со списком userNames, userID и другими данными:
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
, сохранив записи как ключи . Итерируйте users.csv, печатая те, в которых идентификатор не указан. Вы получаете O (n) для обработки как toremove.txt
и users.csv
, так и O (n) для использования памяти toremove.txt
(что, вероятно, относительно мало)