У нас есть файл с именем wordlist, который содержит алфавитные слова объемом 1876 КБ, все из которых длиннее 4 букв и содержат один возврат каретки между каждой новой двухбуквенной конструкцией (ab, ac, ad и т. Д., Слова все содержат возвраты между ними):
wfile = open("wordlist.txt", "r+")
Я хочу создать новый файл, который содержит только слова, которые не являются производными от других, меньших слов. Например, список слов содержит следующие слова [«оскорбитель, оскорбление, оскорбление, оскорбление, оскорбление и т. Д.]. В созданном новом файле должно сохраняться только слово« оскорбление », поскольку это« самый низкий общий знаменатель »(если будет) между всеми этими словами. Аналогично, слово "родео" будет удалено, потому что оно содержит слово роде.
Я попробовал эту реализацию:
def root_words(wordlist):
result = []
base = wordlist[1]
for word in wordlist:
if not word.startswith(base):
result.append(base)
print base
base=word
result.append(base)
return result;
def main():
wordlist = []
wfile = open("wordlist.txt", "r+")
for line in wfile:
wordlist.append(line[:-1])
wordlist = root_words(wordlist)
newfile = open("newwordlist.txt", "r+")
newfile.write(wordlist)
Но это всегда замораживало мой компьютер. Любые решения?