Ответ 1
if any(word in 'some one long two phrase three' for word in list_):
Я могу сделать это в python:
l = ['one', 'two', 'three']
if 'some word' in l:
...
Это проверит, существует ли в списке слово "какое-то слово". Но могу ли я сделать обратное?
l = ['one', 'two', 'three']
if l in 'some one long two phrase three':
...
Мне нужно проверить, находятся ли некоторые слова из массива в строке. Я могу сделать это с помощью цикла, но у этого пути больше строк кода.
if any(word in 'some one long two phrase three' for word in list_):
Если ваш список слов имеет значительную длину, и вам нужно сделать этот тест много раз, возможно, стоит преобразовать список в набор и использовать установленное пересечение для тестирования (с дополнительным преимуществом, которое вы получите слова, которые находятся в обоих списках):
>>> long_word_list = 'some one long two phrase three about above along after against'
>>> long_word_set = set(long_word_list.split())
>>> set('word along river'.split()) & long_word_set
set(['along'])
Вот несколько альтернативных способов сделать это, что может быть быстрее или более подходящим, чем ответ KennyTM, в зависимости от контекста.
1) используйте регулярное выражение:
import re
words_re = re.compile("|".join(list_of_words))
if words_re.search('some one long two phrase three'):
# do logic you want to perform
2) Вы можете использовать наборы, если хотите совместить целые слова, например. вы не хотите находить слово "the" во фразе "теоретические теоремы":
word_set = set(list_of_words)
phrase_set = set('some one long two phrase three'.split())
if word_set.intersection(phrase_set):
# do stuff
Конечно, вы также можете выполнять целые словарные совпадения с регулярным выражением с помощью токена "\ b".
Эффективность этих и решений Kenny будет зависеть от нескольких факторов, таких как продолжительность слова и фраза, и как часто они меняются. Если производительность не является проблемой, тогда перейдите к самому простому, что, вероятно, является Kenny's.
Самый простой и простой метод решения этой проблемы - использование re
import re
search_list = ['one', 'two', 'there']
long_string = 'some one long two phrase three'
if re.compile('|'.join(search_list),re.IGNORECASE).search(long_string): #re.IGNORECASE is used to ignore case
# Do Something if word is present
else:
# Do Something else if word is not present