Wie entfernt man in Python bestimmte Zeilen?

2 Antworten

Angenommen, du hast deine Eingabedaten in einer CSV-Liste:

ID;Getraenkeart;Preis;BLAH
0001;Coca Cola;1.00;foo
0002;Pepsi Cola;0.99;bar
0003;Doppelkorn;2.50;baz
0004;Vodka Vladimir;3.49;meh

Dann könntest du z.B. damit beginnen:

rows=[]
for line in open("getraenke.csv","r"):
    row = line.split(";")
    if not "Cola" in row[1]: rows.append(row)

Dann enthält rows alle Zeilen, in denen nicht das Wort "Cola" in der zweiten Spalte steht.

Du müsstest halt nur ggf. noch Fehlerbehandlung ergänzen (Datei nicht gefunden, etc.) und evtl. schaust mal nach, ob du evtl. nen etwas besseren CSV-"Parser" findest (wenn die Daten denn überhaupt als CSV vorliegen; die Information hättest du in deiner Frage ruhig auch noch mitgeben können...).

Ich nehme hier mal an, dass du eine CSV-Datei hast:

with open ("daten.csv", "r") as file:
    for line in file:
        tmp = line.strip().split(",")
        if not "Cola" in tmp[1]:
            print(line.strip())

Dazu die Testdaten:

1,Saft,3
2,Cola,1
3,Bier,2
4,Cola,2
5,Bier,4

Die Aufgabe ist dann:

1,Saft,3
3,Bier,2
5,Bier,4

Diese Ausgabe kannst du dann in eine Datei umlenken:

python3 filter.py > daten_gefiltert.csv

Oder eine zweite Datei zum schreiben öffnen und die Daten da reinschreiben. Oder gleich verarbeiten innerhalb vom if.

Woher ich das weiß:Berufserfahrung – Softwareentwickler f. Web, Win. & Linux (seit 2001)

Mark Berger  14.11.2018, 15:19

Alternativ kannst du den Filter auch genauer schreiben indem du

if tmp[1] != "Cola":

schreibst. So wird nur "Cola" gefiltert und nicht "Cola-Rum" oder "Cola-Rot"...

1