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: 14237
- 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.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
@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
...