Python Проверьте, есть ли строка в предложении из списка строк - PullRequest
0 голосов
/ 17 января 2020

У меня есть список слов вроде substring = ["one","multiple words"], из которого я хочу проверить, содержит ли предложение какое-либо из этих слов.

sentence1 = 'This Sentence has ONE word'
sentence2 = ' This sentence has Multiple Words'

Мой код для проверки с использованием любого оператора:

any(sentence1.lower() in s for s in substring)

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

Есть ли другой подход к этому?

Ответы [ 3 ]

5 голосов
/ 17 января 2020

Я думаю, вам следует изменить свой порядок:

any(s in sentence1.lower() for s in substring)

вы проверяете, является ли ваша подстрока частью вашего предложения, НЕ, если ваше предложение является частью какой-либо из ваших подстрок.

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

Как упоминалось в других ответах, это то, что даст вам правильный ответ, если вы хотите обнаружить подстроки:

any(s in sentence1.lower() for s in substring)

Однако, если ваша цель - найти слова вместо подстрок, это неверно , Рассмотрим:

sentence = "This is an aircraft"
words = ["air", "hi"]
any(w in sentence.lower() for w in words)  # True.

Слова "air" и "hi" не входят в предложение, но в любом случае оно возвращает True. Вместо этого, если вы хотите проверить слова, вы должны использовать:

any(w in sentence.lower().split(' ') for w in words)
0 голосов
/ 17 января 2020

используйте этот сценарий.

a="Hello Moto"
    a.find("Hello")

В ответ вы получите индекс. Если строки нет, она вернет -1

...