Проверка наличия слов из списка в переданном тексте

Если нужны целые слова, сначала выделите их из текста и сравните со списком поиска. Простое word in text ищет подстроку и ошибочно найдёт, например, «кот» внутри «котлован».

Короткий ответ

Что ответить на собеседовании

Если нужны целые слова, сначала выделите их из текста и сравните со списком поиска. Простое word in text ищет подстроку и ошибочно найдёт, например, «кот» внутри «котлован».

Подробный разбор

Ответ с пояснениями

Условие

Дан массив слов. Требуется написать функцию, которая получает строку‑текст и проверяет, присутствует ли в ней хотя бы одно слово из указанного массива. Если такое слово найдено, функция должна вернуть True, в противном случае — False.

Ответ

Если нужны целые слова, сначала выделите их из текста и сравните со списком поиска. Простое word in text ищет подстроку и ошибочно найдёт, например, «кот» внутри «котлован».

Вариант без учёта регистра, где словом считается последовательность букв:

import re

def contains_any_word(text, words):
    tokens = set(re.findall(r'[^\W\d_]+', text.casefold()))
    return any(word.casefold() in tokens for word in words)

Пустой список поиска даёт False. Дефисы, апострофы и цифры требуют отдельных правил токенизации, если они входят в допустимые слова. Если же по условию нужны именно подстроки, достаточно any(word in text for word in words), но это другой контракт.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее