Tôi có tệp CSV users.csv
có danh sách tên người dùng, tên người dùng và dữ liệu khác:
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"
Trong một tệp khác toremove.txt
tôi có một danh sách các userID:
30923833
77392318
Có cách nào thông minh, hiệu quả để xóa tất cả các hàng khỏi users.csv
tệp có chứa ID toremove.txt
không? Tôi đã viết một ứng dụng Python đơn giản để phân tích hai tệp và ghi vào một tệp mới chỉ những dòng không được tìm thấy toremove.txt
, nhưng nó rất chậm. Có lẽ một số sed
hoặc awk
phép thuật có thể giúp đỡ ở đây?
Đây là kết quả mong muốn, xem xét các ví dụ trên:
username, userid, sidebar_side, sidebar_colour
"John Lennon", 90123412, "left", "blue"
"George Harrison", 72349482, "left", "green"
users.csv
dòng của tệp và n cho các dòng của toremove.txt
. Tôi không thực sự chắc chắn làm thế nào để làm điều đó với độ phức tạp thấp hơn. Ý chính của nó là : for u in users: if not any(toremove in u): outputfile.write(u)
. Tôi có thể đăng nó lên Code Review.
toremove.txt
, lưu các mục làm chìa khóa . Lặp lại users.csv, in những nơi mà id không có trong dict. Bạn nhận được xử lý O (n) cho cả toremove.txt
và và users.csv
sử dụng bộ nhớ O (n) cho toremove.txt
(có lẽ tương đối nhỏ)