Suche eine text-Datei, die für einen eingegebenen Wort in python
Also im Grunde habe ich eine große Liste von Wörtern in einem text-Datei, die ich möchte in der Lage sein zu durchsuchen nach passenden Worten, wenn die Eingaben des Benutzers zu überprüfen die Rechtschreibung, dies ist, was ich habe, so weit.
f = open('words.txt', 'r')
wordCheck = input("please enter the word you would like to check the spelling of: ")
for line in f:
if 'wordCheck' == line:
print ('That is the correct spelling for '+wordCheck)
else:
print ( wordCheck+ " is not in our dictionary")
break
Wenn ich ein Wort eingeben, bekomme ich nur die else-Anweisung, sofort, ich denke nicht, dass es sogar Lesen über den text-Datei.
Sollte ich mit einer while-Schleife statt?
while wordCheck != line in f
Ich bin neu in python und schließlich möchte ich dem Benutzer die Möglichkeit zur Eingabe ein Wort ein, und wenn die Rechtschreibung falsch ist, sollte das Programm drucken Sie eine Liste der passenden Wörter(75% der Buchstaben oder mehr passende).
Jegliche Hilfe würde sehr geschätzt werden
- Warum haben Sie
break
im code?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies tun:
Dieser nimmt einen input, der die Datei öffnet, dann prüft Zeile für Zeile ob der input word entspricht der Zeile in das Wörterbuch, wenn es ist, druckt es die Nachricht, andere weisen, die, wenn Sie keine Linien Links druckt ein Wort ist nicht im Wörterbuch.
while line
und die.readline()
's scheinen ein wenig unübersichtlich... Warum nicht einfachfor line in f
?\n
von der Linie, nicht fügen Sie es der string...if line.strip() == wordCheck
und diestr(wordCheck)
ist überflüssig wieraw_input
ist immer ein stringfound
nicht vorhanden sein (setzen Sie ihn aufFalse
vor dem looping), so erhalten Sie eineNameError
auf die Linie... und, wenn man Sie Einmal gefunden, sollten Siebreak
so stoppen Sie gehen durch die DateiEs nicht tun Schreibweise, wie pro die korrekte Schreibweise Algorithmus, aber finden Sie ähnliche Worten:
Können Sie über den "cutoff" und andere Parameter - überprüfen Sie die Dokumentation für get_close_matches in der difflib Modul
Was Sie wahrscheinlich tun möchten, ist einen Blick auf: https://pypi.python.org/pypi/aspell-python/1.13 was ist ein Python-wrapper um die
aspell
Bibliothek, die das besser tun werden, Anregungen und erstreckt sich auf mehrere Wörterbücher sowie.Da hast du nur durchgeschleift der ersten Zeile, bevor es bricht.
Den
for/else
hier verwendet wird, so dass, wenn das Wort nicht in eine Zeile, dieelse:
block laufen würde.else
für jede Zeile, sondern nur nach der Schleife, wennbreak
wurde nicht genannt'wordcheck' == line:
ist nicht mit derwordCheck
variable zugewiesen, in der die input-Befehlin
und nicht==
'andr'
passen'andrew'
jetzt wegen derin
statt==
. Wahrscheinlich auch Wert, Strippen die (wahrscheinliche) nachfolgende neue-Zeile-Zeichen abgeholt durch das Lesen aus der Datei. Ich denke, es ist ein Wort pro Zeile..split()
im, teilt die Zeile in Wörter