Ohne die "Datenbank" können wir das hier kaum testen

Du kannst in solchen Fällen doch auch mal statisch, zwei, drei Datensätze im Quellcode platzieren, dann musst Du uns nicht noch die Datei posten.
Da Du wohl keinen Fehler, sondern ein anderes Verhalten bekommst, wäre es schon sinnvoll, das Script mal selber testen zu können - am besten mit Wörtern, die bei Dir exakt dieses Fehlverhalten produzieren.
Allgemein zum Code:
- Dateien solltest Du mittels `with` öffnen:
Code: Alles auswählen
with open(...) as handler:
# hier ist `handler` Dein File-Objekt
Damit wird die Datei garantiert geschlossen (ein explizites `close` entfällt)
- der Name `file` ist bei Python2.x eine Built-in Funktion, die man somit überschreibt. Ok, Du verwendest 3.x, da ist das dann wohl i.O. Aber ein Hinweis darauf schadet nicht, da hier ja auch viele User noch 2.x verwenden
- die Liste `deutsch` ist total überflüssig, so weit ich das überblicke. Du kannst auch über ein Dictionary iterieren und erhältst somit die Schlüssel. Du kannst sogar mittels der `items`-Methode direkt Schlüssel und Wert in einer Schleife an zwei Namen binden. Das würde den Code leserlicher und kompakter machen, da man sich dieses Binden von `c` sparte.
- Ich würde die Logik zur Auswertung anders gruppieren. Zwischen dem Text auf "richtig" und "falsch" prüfst Du auf Abbruch des Vokabeltests - das erschwert imho das Verständnis des Codes. Prüfe auf den Abbruch doch am Schluss.
- Wieso verwendest Du nicht einfach das `csv`-Modul zum Einlesen der Daten? Oder Du verwendest direkt das JSON-Format und entsprechend das `json`-Modul. Das wäre viel eleganter als Deine jetzige Parsing-Funktion. (Leerzeilen fängst Du momentan ja nicht ab... also ist das wenig robust!)
- Du kannst Methoden auch direkt "in-place" ausführen, ohne Zwischenergebnisse an einen neuen Namen (`ii`) zu binden. In diesem Falle also z.B. so:
(Ich würde das Parsen aber def. umbauen, s.o.)