Как сказать Python продолжить оценку после нахождения результата - PullRequest
0 голосов
/ 14 июня 2019

У меня есть словарь слов и текст. Я хотел бы создать список, который содержит все слова, содержащиеся как в словаре, так и в тексте, с оговоркой, что если слово в словаре существует более одного раза в тексте, оно также должно добавить его в список. поэтому список может продолжать одно и то же слово более одного раза, если это слово повторяется в тексте.

Я использую оператор if внутри цикла for, который останавливает итерацию, как только найдено совпадение, и переходит к следующему слову в словаре, не продолжая поиск первого слова снова до конца текста. текст представляет собой одну строку. Вот мой код

text = 'The Notes will be a further issuance of and will form a single
 series with billion aggregate principal amount Notes due, in the case of the Notes, 
the principal amount of the Notes'
dictionary = ['Notes', 'issuance', 'form', 'series', 'aggregate', 'due', 
'case', 'constitution', 'executive']

list_of_words=[]
for word in (dictionary):
    if word in text:
        list_of_words.append(word)

Я хотел бы видеть, например, слово «Примечания», повторяющееся в list_of_words, потому что оно существует в словаре и повторяется в тексте. Как в примере ниже:

['Notes', 'issuance', 'form', 'series', 'aggregate', 'Notes, 'due', 'case', 'Notes']

Однако мой код возвращает только первый экземпляр совпадения, как показано ниже:

['Notes', 'issuance', 'form', 'series', 'aggregate', 'due', 'case']

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

вам нужно сделать противоположную вещь:

text = 'The Notes will be a further issuance of and will form a single series with billion aggregate principal amount Notes due, in the case of the Notes, the principal amount of the Notes'
dictionary = ['Notes', 'issuance', 'form', 'series', 'aggregate', 'due', 'case', 'constitution', 'executive']

list_of_words=[]
text_ = text.split() # Split string into list , ['The', 'Notes', 'will', 'be', 'a', 'further'...]
for word in text_: #for each item(word) in list of words
    if word in dictionary: # Check if word in dictionary
        list_of_words.append(word)

print (list_of_words)
0 голосов
/ 14 июня 2019

Зацикливание слов в text вместо:

for word in text.split():
    if word in dictionary:
        ... # append word here

Или, используя понимание списка:

list_of_words = [word for word in text.split() if word in dictionary]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...