Python-check für word in der Liste
Schreibe ich eine Rechtschreibprüfung Funktion und ich bin mit zwei text-Dateien: eine, die falsch geschriebenen text und eine Textdatei mit ein paar Wörtern aus dem Wörterbuch. Ich drehte den text falsch geschriebene Wörter in eine Liste von strings und text-Datei mit dem Wörterbuch-Wörter in einer Liste von Wörtern. Jetzt muss ich sehen, ob die Worte in meinem falsch geschriebenen Liste in meine Liste der Wörter aus dem Lexikon.
def spellCheck():
checkFile=input('Enter file name: ')
inFile=open(checkFile,'r')
# This separates my original text file into a list like this
# [['It','was','the','besst','of','times,'],
# ['it','was','teh','worst','of','times']]
separate=[]
for line in inFile:
separate.append(line.split())
# This opens my list of words from the dictionary and
# turns it into a list of the words.
wordFile=open('words.txt','r')
words=wordFile.read()
wordList=(list(words.split()))
wordFile.close()
# I need this newList to be a list of the correctly spelled words
# in my separate[] list and if the word isn't spelled correctly
# it will go into another if statement...
newList=[]
for word in separate:
if word in wordList:
newList.append(word)
return newList
- Ich hoffe, dass ich der festen Einrückung richtig - könnte man das überprüfen? Ich hatte zu jonglieren, ein paar Zeilen um...
- Danke!!! Wenn ich mein Programm, das ich immer eine leere Liste, obwohl. Weißt du, was ich falsch gemacht habe?
- Sind Sie Fragen, diese Frage wieder, aber jetzt versuchen, verwenden Sie Listen statt einer
dict
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Das problem, das Sie hatten, war, dass Sie iteriert
separate
, die eine Liste von Listen. Nicht vorhanden sein sollte, jede Liste, die in IhrerwordList
werden, weshalb die if-Anweisung schlägt immer fehl. Die Wörter, die Sie wollen, Durchlaufen Sie in die Teillisten enthalten inseparate
. So können Sie Durchlaufen diese Worte in einer zweiten for-Schleife. Sie können auchfor word in itertools.chain.from_iterable(separate)
.Hoffe, das hilft
Zuerst, ein Wort über Datenstrukturen. Statt
list
s, die Sie verwenden solltenset
s, da Sie (scheinbar) wollen nur eine Kopie von jedem Wort. Können Sie Sätze erstellen aus Ihren Listen:Dann ist es ganz einfach:
Und wenn Sie wollen, die falschen Worte, haben Sie einen anderen one-liner:
Beachten Sie, dass ich verwendet names_with_underscores, statt CamelCase, wie empfohlen, in PEP-8.
Bedenken Sie jedoch, dass dies nicht sehr effizient für die Rechtschreibprüfung, da Sie nicht prüfen, Kontext.