Python: Kreuzworträtsel Probleme mit Umlauten?
Und zwar soll ich ein Programm erstellen welches beim lösen von Kreuzworträtseln hilft. Jedoch habe ich jetzt das Problem, dass Wörter mit (ÄÖÜß) nicht vorgeschlagen werden.
Wie kann ich es am besten beheben? Ich habe schon versucht die Buchstaben entsprechend zu ersetzen z.B. Ä durch ae aber es hat nicht funktioniert.
Am Beispiel: Abfluß -> keine Lösungsvorschläge werden angezeigt.
# Datei z.B. Wörterbuch einlesen
search = "?????ß" # Lösungswort: Abfluß
for word in words:
if len(word) == len(search):
index = 0
ok = True
for character in search:
if character == "?":
index = index + 1
continue
if character != word[index]:
ok = False
break
index = index + 1
if ok:
print(word)
3 Antworten
Eigentlich müsste dies funktionieren ...
Für die deutschen Umlaute und ß gibt es (intern) verschiedene Codierungen. Z.B. latin-1 oder heute meist utf-8.
Dein Editor, mit dem du dieses Programm erstellt hast, hat vermutlich utf-8 verwendetet, da du sonst ein deutsches Spezialzeichen nicht ohne weiteres als String-Konstante eingeben kannst.
Die Frage ist nun, wie die deutschen Zeichen in der Wörterbuch-Datei codiert sind - oder wurden sie dort durch 2 Buchstaben, z.B. ae statt ä gespeichert. Schaue dir mal die Datei in einem Texteditor an.
Wie hast du die Datei eingelesen (siehe 'open' Funktion)
Du musst eventuell die Codierung angeben, z.B.
Eingabe= open('DATEINAME',mode='r',encoding='latin-1')
bzw.
Eingabe= open('DATEINAME',mode='r',encoding='utf-8')
Da man im Kreuzworträtsel eh Umlaute so wie "ae" statt "ä" schreibt und ein "ß" auch ein "ss" ist.. wieso machst du es dir nicht einfach und schreibst es so hin? Du kannst auf der Seite doch hinweisen, dass man die Umlaute und das scharfe s ausschreiben soll. Oder verstehe ich was falsch? ^^
welches fontset wird verwendet?
das ist nicht das fontset! fontset kann zb arial / englisch sein ... dann gibt es keine umlaute im fontset das für die abfrage verwendet wird, sehr wohl aber auf deiner tastatur wenn du arial / german verwendest.
zb . ... in der programmierplattform wirst du englische fontsets haben ;-)
da ist askii x dann ein anderes zeichen -> kein match!
So könnte man es natürlich auch lösen, aber ich bin eigentlich auf der Suche nach einer eleganteren Methode.