2017-03-14 3 views
1

Ich bin fest mit dem Entfernen von Zeilen, die eine Datei vorhanden sind mit den Zeilen eine andere Datei in Python vorhanden. Ich benutze zwei for-Schleifen für die String-Übereinstimmung, aber es gibt doppelte Zeilen bei der zweiten Schleife. Gibt es andere Möglichkeiten, es zu tun? DankeEntfernen von Zeilen in einer Datei, die in einer anderen Datei mit Python vorhanden sind

with open('results.csv','r+') as source: 
    lines = source.readlines() 

f = open('results_comments.csv','r') 
line = f.readlines() 
for l in line: 
    for L in lines: 
     if L!=l: 
      source.write(L) 
f.close() 
+0

Ihre Frage wäre klarer, wenn man es bearbeitet an einem Beispiel enthalten. –

+0

Aus dem Namen der Dateien sieht es so aus, als würden Sie mit CSV-Dateien arbeiten. Habe ich recht? – styvane

+0

nein, nur zur Benennung. es ist ein Plantext. – Balaji

Antwort

1

Sie können versuchen:

with open('results.csv','r') as source: 
    lines_src = source.readlines() 
with open('results_comments.csv','r') as f: 
    lines_f = f.readlines() 
destination = open("destination.csv","w") 
for data in lines_src: 
    if data not in lines_f: 
     destination.write(data) 
destination.close() 
+1

funktioniert wie Juwel, danke – Balaji

0

Ihre Variablennamen sind verwirrend, also habe ich ein Paar umbenannt. Ich denke, Sie müssen eine neue Datei öffnen, um die Ergebnisse zu schreiben (zumindest wird das klarer machen, was Sie tun wollen). Sie können die Datei anschließend umbenennen, wenn Sie denselben Namen haben möchten.

with open('results.csv','r+') as source: 
    filter_lines = source.readlines() 

with open('results_comments.csv','r') as f: 
    lines = f.readlines() 

with open('target.csv', 'w') as target: 
    for line in lines: 
     if line not in filter_lines: 
      target.write(line) 
0
with open('results.csv','r+') as source: 
    lines = source.readlines() 

f = open('results_comments.csv','r') 
line = f.readlines() 
line = filter(lambda x : x not in lines, line) 
f.write('\n'.join(line)) 
f.close() 
Verwandte Themen