users.csv
userNames, userID 및 기타 데이터 목록 이있는 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
에는 userID 목록이 있습니다.
30923833
77392318
users.csv
ID가 포함 된 파일 에서 모든 행을 제거하는 영리하고 효율적인 방법이 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이고의 행은 n입니다 toremove.txt
. 복잡성을 낮추는 방법을 잘 모르겠습니다. 그것의 요지는 : for u in users: if not any(toremove in u): outputfile.write(u)
. 코드 검토에 게시 할 수 있습니다.
toremove.txt
항목을 키로 저장하여 읽습니다 . users.csv를 반복하여 id가 dict에없는 것을 인쇄합니다. toremove.txt
and에 대한 O (n) 처리 users.csv
및 ( toremove.txt
아마도 비교적 작은) O (n) 메모리 사용