У меня есть программа, которая объединяет слова, разделенные звездочкой.Программа удаляет звездочку и соединяет первую часть слова (ту, что перед звездочкой) со своей второй частью (той, что после звездочки).Он работает хорошо, за исключением одной основной проблемы: вторая часть (после звездочки) все еще находится в выходных данных.Например, программа объединена ['presi', '*', 'dent'], но 'dent' все еще находится в выходных данных.Я не понял, где проблема с моим кодом.Код ниже:
from collections import defaultdict
import nltk
from nltk.tokenize import word_tokenize
import re
import os
import sys
from pathlib import Path
def main():
while True:
try:
file_to_open =Path(input("\nPlease, insert your file path: "))
with open(file_to_open) as f:
words = word_tokenize(f.read().lower())
break
except FileNotFoundError:
print("\nFile not found. Better try again")
except IsADirectoryError:
print("\nIncorrect Directory path.Try again")
word_separator = '*'
with open ('Fr-dictionary2.txt') as fr:
dic = word_tokenize(fr.read().lower())
def join_asterisk(ary):
for w1, w2, w3 in zip(words, words[1:], words[2:]):
if w2 == word_separator:
word = w1 + w3
yield (word, word in dic)
elif w1 != word_separator and w1 in dic:
yield (w1, True)
correct_words = []
incorrect_words = []
correct_words = [w for w, correct in join_asterisk(words) if correct]
incorrect_words = [w for w, correct in join_asterisk(words) if not correct]
text=' '.join(correct_words)
print(correct_words)
print('\n\n', text)
user2=input('\nWrite text to a file? Type "Y" for yes or "N" for no:')
text_name=input("name your file.(Ex. 'my_first_file.txt'): ")
out_file=open(text_name,"w")
if user2 =='Y':
out_file.write(text)
out_file.close()
else:
print('ok')
main()
Интересно, кто-нибудь может помочь мне обнаружить ошибку здесь?
Пример ввода:
Участие в мероприятиях по уходу за престарелыми и парфюмерией * Сеанс австралийского Сеу де Сурсис де ла Сосьете »ferroviaire, at il il soutenu de vant des élusdu Grand-Est réunis à l'Elysée.
Президент Республики, Эммануэль Макрон (Франция), Aux Côtes Du покровитель SNCF, Гийом Пепи, Га Мон Монпарнас, Париж,le 1er juillet 2017. GEOFFROY VAN DER HASSELT / AFP
Вызывает раздражение, парфюмерное, американское высшее образование, а также поезда, оставленные без внимания, оставленные без внимания.Президент Республики.«Великий девелопмент», Франция, 26 февраля, Елисейские каникулы и кадры, Эммануэль Макрон и его дети, находящиеся в центре внимания SNCF, до конца 23-го декабря 2018 года,alors que le chef de l'Etat s'était engagé, durant и dépla * цемент данс Вогезы, эффект * tué en avril 2018, é ce qu'elle reste opération * nelle.
Пример моеготоковый выход:
['les', 'engagements', 'du', 'président', 'dent', 'de', 'la', 'république', 'que', 'sont', 'aussi', 'ceux', 'des', 'dirigeants', 'de', 'la', 'société', 'ferroviaire']
Пример моего желаемого выхода:
['les', 'engagements', 'du', 'président', 'de', 'la', 'république', 'sont', 'aussi', 'ceux', 'des', 'dirigeants', 'de', 'la', 'société', 'ferroviaire']