Eu tenho um arquivo CSV users.csvcom uma lista de userNames, userIDs e outros dados:
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"
Em outro arquivo toremove.txt, tenho uma lista de userIDs:
30923833
77392318
Existe uma maneira inteligente e eficiente de remover todas as linhas do users.csvarquivo que contém os IDs toremove.txt? Eu escrevi um aplicativo Python simples para analisar os dois arquivos e gravar em um novo arquivo apenas as linhas que não foram encontradas toremove.txt, mas é extraordinariamente lento. Talvez alguma sedou awkmágica possa ajudar aqui?
Este é o resultado desejado, considerando os exemplos acima:
username, userid, sidebar_side, sidebar_colour
"John Lennon", 90123412, "left", "blue"
"George Harrison", 72349482, "left", "green"
users.csvlinhas do arquivo en para as linhas de toremove.txt. Não tenho muita certeza de como fazê-lo com menor complexidade. A essência do que é: for u in users: if not any(toremove in u): outputfile.write(u). Posso publicá-lo na Revisão de Código.
toremove.txt, salvando as entradas como chaves . Iterate users.csv, imprimindo aqueles em que o ID não está no dict. Você começa O (n) o processamento para ambos toremove.txte users.csv, e uso de O (n) de memória para toremove.txt(o que provavelmente é relativamente pequeno)