Соответствие регулярному выражению с предложением, слова которого начинаются с введенных слов - PullRequest
0 голосов
/ 29 января 2020

предположим, у меня есть два слова

words = ['create', 'mult']

и список

list = ['can we create malfunction channels in teams', 'i want to create multiple teams in microsoft teams']

я хочу отфильтровать предложение в списке со словом в слов если полное слово соответствует или содержит слово, начинающееся со слова в words

desired output = ['i want to create multiple teams in microsoft teams']

здесь первое предложение фильтруется, так как в нем нет слов, начинающихся с mult, хотя в нем есть create

Ответы [ 2 ]

1 голос
/ 29 января 2020

Вам не нужен шаблон регулярных выражений для этого. Единственное необходимое сравнение - проверить, начинается ли одна строка с другой: startswith.

. Вы хотите проверить:

  1. для каждого предложения в list ...
  2. , где ЛЮБОЕ слово начинается с одной из фраз в words ...
  3. для ВСЕХ фраз в words.

Затем

words = ['create', 'mult']
list = ['can we create malfunction channels in teams',
    'i want to create multiple teams in microsoft teams']

result = [sentence for sentence in list
    if all(
            any(
                word.startswith(phrase)
                    for word in sentence.split()
                )
            for phrase in words
        )]

приводит к

['i want to create multiple teams in microsoft teams']

Вы можете запустить его с другим words, чтобы убедиться, что он действительно работает.

1 голос
/ 29 января 2020

Вот что вы можете сделать:

import re

words = ['create', 'nn']

sentenses = ['can we create malfunction channels in teams', 'i want to create multiple teams in microsoft teams']
pattern = re.compile(''.join([r'\b{word}\w*\b.*'.format(word=word) for word in words]))
result = [s for s in sentenses if pattern.findall(s)]

print(result) # []

words = ['create', 'mult']
pattern = re.compile(''.join([r'\b{word}\w*\b.*'.format(word=word) for word in words]))
result = [s for s in sentenses if pattern.findall(s)]
print(result) # ['i want to create multiple teams in microsoft teams']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...