Понимание списка предметов в списке - PullRequest
0 голосов
/ 08 мая 2019

список понимания, чтобы проверить наличие любого из пунктов.

У меня есть текст, и я хотел бы проверить некоторые ключевые слова. Он должен вернуть мне предложение, если оно содержит какое-либо из ключевых слов.

Пример:


     text = [t for t in string.split('. ') 

     if 'drink' in t or 'eat' in t 

     or 'sleep' in t]

Это работает. Тем не менее, я думаю, что если есть лучший способ, как список ключевых слов может расти.

Я пытался поместить ключевые слова в список, но это не сработало бы в этом понимании списка. ИЛИ используя, если есть

     pattern = ['drink', 'eat', 'sleep']

     [t for t in string.split('. ') if any (l in pattern for l in t)]

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Вы используете any в обратном направлении. Это то, что вы хотите:

[t for t in string.split('. ') if any(l in t for l in pattern)]

Альтернативный подход - использование регулярного выражения:

import re

regex = '|'.join(pattern)

[t for t in string.split('. ') if regex.search(t)]
1 голос
/ 08 мая 2019

Вы были почти там:

pattern = ['drink', 'eat', 'sleep']
[t for t in string.split('. ') if any(word in t for word in pattern)]

Ключ должен проверить для каждого слова в образце, если эта работа находится внутри предложения:

any(word in t for word in pattern)
...