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
Abfrage Liste if row is not None: mit Fehler
- __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
@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:
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
...