Abfrage Liste if row is not None: mit Fehler

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
franze_m
User
Beiträge: 15
Registriert: Donnerstag 9. März 2023, 20:27

Hallo,
ich lese eine CSV mit einer Leerzeile ein und bin nicht in der Lage diese Leerzeile mit der Abfrage if row is not None: zu eliminieren.

Was mache ich falsch ? der Code befindet sich im Bild mit dem Variableninhalt row. https://privat.bb-24.net/s/YK3gzAL2f69Ecc8
Benutzeravatar
__blackjack__
User
Beiträge: 13997
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@franze_m: Natürlich nicht. CSV-Reader liefert ausschliesslich Werte die *nicht* `None` sind. Insbesondere ist eine leere Zeile nicht `None`. Welchen Wert die hat, zeigt Dir die IDE da sogar netterweise an.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
Sirius3
User
Beiträge: 18250
Registriert: Sonntag 21. Oktober 2012, 17:20

@franze_m: Code postet man hier am besten als Text und nicht als Bild.
Eingerückt wird in Python immer mit 4 Leerzeichen pro Ebene, nicht zwei. Variablennamen schreibt man immer komplett klein.
In Python ist so ziemlich alles ein Objekt, bei `reader_obj` bietet also das Postfix `obj` keinen Mehrwert und man kann es weglassen.
Für Flags gibt es True und False, das durch 1 oder 0 zu ersetzen macht den Code schwer verständlich. Einbuchstabige Variablennamen sind auch schwer zu verstehen, für was steht `n`?
Was auch immer `findword` macht, es liefert hoffentlich bei gleichem Input gleichen Output, das also zigmal aufzurufen ist nicht sinnvoll, man sollte die Funktion jeweils einmal aufrufen.
Wenn man sich gegenseitig ausschließende if-Abfragen hat, benutzt man elif.
Alles in allem kommt man dann bei ungefähr so etwas raus:

Code: Alles auswählen

word_not_found = False
for row in reader:
    word_not_found = True
    if row:
        first_word = findword(row[0], n=1, sep=";")
        if first_word == "Top-Girokonto":
            word_not_found = False
            acount_number = findword(row[0], n=2, sep=";")
        elif first_word == "Buchungstag":
            ...
        first_word = findword(row[0], n=1, sep=" ")
        if first_word in ["Letzter", "Vorgemerkte"]:
            word_not_found = False
        ...
franze_m
User
Beiträge: 15
Registriert: Donnerstag 9. März 2023, 20:27

Danke Siruis3,
das hat geholfen.
Antworten