как сделать поиск через список
делал поиск по строке через find, но постоянно прибавлять or r.find("арбуз") != -1 or... не очень удобно
нужно сделать поиск с списка, нашел решение:
a = ['арбуз', 'барабан', 'волк', 'гусь']
message= input()
if set(a) & set(message):
print('В строке есть слова из списка')
вот только ничего не произойдет, если слово будет написано слитно с чем-либо
Ответы (2 шт):
Автор решения: Сергей
→ Ссылка
Если вас беспокоит необходимость "постоянно прибавлять or r.find("арбуз") != -1 or...", то решение простое, чтобы не возиться со слитностью вручную:
a = ['арбуз', 'барабан', 'волк', 'гусь']
message= input()
for word in a:
if message.find(word) != -1:
print (word) # или другое нужное вам действие
Автор решения: Stanislav Volodarskiy
→ Ссылка
Переберите все слова из списка внутри any:
words = ['арбуз', 'барабан', 'волк', 'гусь']
message = input()
if any(message.find(w) != -1 for w in words):
print('В строке есть слова из списка')
Можно решить задачу через регулярные выражения. re.escape в этом случае ничего не делает, он пригодится если в список слов попадут когда-нибудь знаки препинания:
import re
words = ['арбуз', 'барабан', 'волк', 'гусь']
pattern = '|'.join(map(re.escape, words))
message = input()
if re.search(pattern, message) is not None:
print('В строке есть слова из списка')