@naitiq

Как реализовать поиск фраз в тексте по вордлисту?

Допустим, есть вордлист:
Маша
Игорь
Светлана
Евгений

Как из такого текста

Задача организации, в особенности же разбавленное изрядной долей эмпатии, рациональное мышление обеспечивает широкому кругу (специалистов) Светлана Евгений Маша Игорь
участие в формировании инновационных методов управления процессами. В своём стремлении улучшить пользовательский опыт мы упускаем, что некоторые особенности внутренней политики могут быть своевременно верифицированы.


Вытащить в той же последовательности слова, которые есть в списке
Светлана Евгений Маша Игорь

Текст может быть разный и фраза в другой последовательности, но нужна именно в той последовательности, что в коде.
  • Вопрос задан
  • 145 просмотров
Решения вопроса 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Натыкал что первое в голову пришло:
Натыканное
data = '''Задача организации, в особенности же разбавленное Светлана изрядной долей эмпатии, рациональное мышление обеспечивает широкому кругу (специалистов) Светлана Евгений Маша Игорь
участие в формировании инновационных методов управления процессами. В своём стремлении улучшить пользовательский опыт мы упускаем, что некоторые особенности внутренней политики могут Светлана Светлана Светлана быть своевременно верифицированы.Задача организации, в особенности же разбавленное Светлана изрядной долей эмпатии, рациональное мышление обеспечивает широкому кругу (специалистов) коля Светлана Евгений Маша Игорь Миша
участие в формировании инновационных методов управления процессами. В своём стремлении улучшить пользовательский опыт мы упускаем, что некоторые особенности внутренней политики могут Светлана Светлана Светлана быть своевременно верифицированы.Задача организации, в особенности же разбавленное Светлана изрядной долей эмпатии, рациональное мышление обеспечивает широкому кругу (специалистов)  Светлана, Евгений. Маша? Игорь
Светлана участие в формировании инновационных методов управления процессами. В своём стремлении улучшить пользовательский опыт мы упускаем, что некоторые особенности внутренней политики могут Светлана Светлана Светлана быть своевременно разбавленное Светлана изрядной долей эмпатии, рациональное мышление обеспечивает широкому кругу (специалистов) Светлана Евгений Маша Игорь Светлана Евгений Маша Игорь
участие в формировании инновационных методов управления процессами. В своём стремлении улучшить пользовательский опыт мы упускаем, что некоторые особенности внутренней политики могут Светлана Светланаверифицированы.'''
words = ['Маша',
'Игорь',
'Светлана',
'Евгений']
newdata = [(word.strip(), number) for number, word in enumerate(data.split()) if word in words]

data = [(word[0], newdata[i+1][1]-word[1]) for i, word in enumerate(newdata[:-1])]

newdata = []
for word in data:
    if word[1] == 1:
        newdata.append((word[0], 1))
    else:
        newdata.append((word[0], 0))

result = []
results = []
counter = 0
another = False
for i, word in enumerate(newdata):
    if word[1]:
        counter += 1
        result.append(word[0])
        another = True
    elif another or i == len(newdata):
        result.append(word[0])
        another = False
        results.append((counter+1, result))
        result = []
        counter = 0
        
print(results)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Регулярки тут и не нужны:
wordlist = [
    'Маша', 'Игорь', 'Светлана', 'Евгений'
]

text = '''Задача организации, в особенности же разбавленное изрядной долей эмпатии,
рациональное мышление обеспечивает широкому кругу (специалистов) Светлана Евгений Маша Игорь
участие в формировании инновационных методов управления процессами.
В своём стремлении улучшить пользовательский опыт мы упускаем, что некоторые особенности внутренней
политики могут быть своевременно верифицированы.'''

result = []
for word in text.split():
    if word in wordlist:
        result.append(word)
print(result)
# ['Светлана', 'Евгений', 'Маша', 'Игорь']
Ответ написан
AgentSmith
@AgentSmith
Это мой правильный ответ на твой вопрос
Regexp:
(Маша|Игорь|Светлана|Евгений)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы