Ich habe zwei Textdateien, beide alphabetisch sortiert.
wordlist.txt, die eine Liste eindeutiger Wörter enthält:
dictionary.txt, das eine Liste nicht eindeutiger Wörter enthält, gefolgt von einem Tabulator und einer Definition:
Code: Select all
(word) (definition)
and congiunzione
at abbreviazione
at avverbio
Für jedes Wort in
wordlist.txt muss ich
dictionary.txt durchsuchen, bis ich die erste Übereinstimmung finde und die entsprechenden sammle Definition und die nachfolgenden, falls vorhanden.
Sobald ich sie gesammelt habe, unterbreche ich den Suchzyklus, da es sinnlos wäre, die dictionary.txt weiter zu durchsuchen.
Ich fahre mit der fort nächster Eintrag in
wordlist.txt und so weiter.
Dies ist ein Auszug meines Codes:
Code: Select all
for wordtosearch in open("wordlist.txt", "r"):
found = 0
isfound = False
for dictionaryentry in open("dictionary.txt", "r"):
dictionaryelements = dictionaryentry.split("\t") #split the word and the definition
if wordtosearch == dictionaryelements[0]:
# ... here I gather the definition and I concatenate it to the previous one
found += 1 #at least 1 entry is found
isfound = True
else:
isfound = False
#if we don't have a match in the current cicle but we've had at least un match before, it means we can stop search further
if found > 0 and isfound == False:
break
Wie Sie sehen, muss ich für jedes
wordtosearch das
Wörterbuch durchsuchen, bis das Wort gefunden wird. Das nimmt viel Zeit in Anspruch, da sowohl die Wortliste als auch das Wörterbuch Hunderte von Einträgen enthalten, und selbst wenn ich es weggelassen habe, müsste ich tatsächlich fünf verschiedene Wörterbücher durchsuchen.
Ich habe über das Speichern nachgedacht die Zeilennummer, in der das vorherige Wort übereinstimmte, sodass die Suche nach dem nächsten Wort in dieser Zeile von dictionary.txt beginnt und nicht am Anfang.
Wenn für das vorherige Wort keine Übereinstimmung gefunden wird, verwende ich die vorheriges dazu und so weiter.
Wäre das eine gute Lösung? Oder bietet Python etwas Besseres, das ich nicht kenne?
Ich bin übrigens nicht auf Python beschränkt, wenn Sie etwas Besseres wissen, sondern auf Windows.
Ich habe zwei Textdateien, beide alphabetisch sortiert.
[b]wordlist.txt[/b], die eine Liste eindeutiger Wörter enthält:
[code](word)
a
ad
and
at
[/code]
[b]dictionary.txt[/b], das eine Liste nicht eindeutiger Wörter enthält, gefolgt von einem Tabulator und einer Definition:
[code](word) (definition)
and congiunzione
at abbreviazione
at avverbio
[/code]
Für jedes Wort in [b]wordlist.txt[/b] muss ich [b]dictionary.txt[/b] durchsuchen, bis ich die erste Übereinstimmung finde und die entsprechenden sammle Definition und die nachfolgenden, falls vorhanden.
Sobald ich sie gesammelt habe, unterbreche ich den Suchzyklus, da es sinnlos wäre, die dictionary.txt weiter zu durchsuchen.
Ich fahre mit der fort nächster Eintrag in [b]wordlist.txt[/b] und so weiter.
Dies ist ein Auszug meines Codes:
[code]for wordtosearch in open("wordlist.txt", "r"):
found = 0
isfound = False
for dictionaryentry in open("dictionary.txt", "r"):
dictionaryelements = dictionaryentry.split("\t") #split the word and the definition
if wordtosearch == dictionaryelements[0]:
# ... here I gather the definition and I concatenate it to the previous one
found += 1 #at least 1 entry is found
isfound = True
else:
isfound = False
#if we don't have a match in the current cicle but we've had at least un match before, it means we can stop search further
if found > 0 and isfound == False:
break
[/code]
Wie Sie sehen, muss ich für jedes [b]wordtosearch[/b] das [b]Wörterbuch[/b] durchsuchen, bis das Wort gefunden wird. Das nimmt viel Zeit in Anspruch, da sowohl die Wortliste als auch das Wörterbuch Hunderte von Einträgen enthalten, und selbst wenn ich es weggelassen habe, müsste ich tatsächlich fünf verschiedene Wörterbücher durchsuchen.
Ich habe über das Speichern nachgedacht die Zeilennummer, in der das vorherige Wort übereinstimmte, sodass die Suche nach dem nächsten Wort in dieser Zeile von dictionary.txt beginnt und nicht am Anfang.
Wenn für das vorherige Wort keine Übereinstimmung gefunden wird, verwende ich die vorheriges dazu und so weiter.
Wäre das eine gute Lösung? Oder bietet Python etwas Besseres, das ich nicht kenne?
Ich bin übrigens nicht auf Python beschränkt, wenn Sie etwas Besseres wissen, sondern auf Windows.