Поиск слова в строке Python: использование if-условия

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы определить, содержит ли строка определенное слово, используйте оператор in. Это просто и эффективно:

Python
Скопировать код
word = 'точно'
phrase = 'Найдите точное слово в фразе.'
found = word in phrase
print(found)  # Вернёт: True. Это ваш ответ.

Для точного совпадения исключите слова, которые являются частью других, разделите фразу на отдельные слова.

Кинга Идем в IT: пошаговый план для смены профессии

Разделение на слова и поиск полностью совпадающих слов

Если вам нужно найти целое слово, чтобы не брать в расчет частичные совпадения:

Python
Скопировать код
words = phrase.split()  # Проводим разделение фразы на отдельные слова.
found = word in words   # Ищем полное совпадение слова среди полученных.
print(found)  # Вернёт True, если слово 'точно' присутствует в фразе в качестве самостоятельного слова.

Регулярные выражения, учитывающие границы слов

Для поиска слов с учётом их границ применяйте следующий синтаксис:

Python
Скопировать код
import re
pattern = re.compile(r'\b{}\b'.format(word))  # Определены границы слова, нет пересечений!
found = bool(pattern.search(phrase))
print(found)  # Вернёт True только в том случае, если 'точно' присутствует в фразе как самостоятельное слово.

Продвинутые методы поиска слов в строках

Точный поиск слов с использованием регулярных выражений

Если нужны более гибкие параметры для поиска полных слов, используйте границы в регулярных выражениях:

Python
Скопировать код
import re
found = bool(re.search(r'\b{}\b'.format(re.escape(word)), phrase))  # Учёт границ слов!
print(found)  # Вернёт: True. Успех! Слово 'точно' обнаружено в фразе.

Поиск без учёта регистра

Игнорирование регистра букв в словах позволяет вам найти совпадение, несмотря на разный регистр, включив модификаторы в шаблоны регулярных выражений:

Python
Скопировать код
found = bool(re.search(r'\b{}\b'.format(re.escape(word)), phrase, re.IGNORECASE)) # Регистр не влияет на результат поиска!
print(found)  # Вернёт True для всех форм слова 'точно', будь то 'точно', 'ТОЧНО' или 'тОчНо'.

Компилирование регулярного выражения для увеличения скорости поиска

Оптимизируйте скорость поиска с использованием предварительно скомпилированных регулярных выражений для часто выполняемых операций:

Python
Скопировать код
pattern = re.compile(r'\b{}\b'.format(re.escape(word)), re.IGNORECASE)
found = bool(pattern.search(phrase))  # Поиск выполнился быстро, правда же?

Контекст имеет значение!

Обратите внимание, что оператор in ищет вхождения в любой части строки:

Python
Скопировать код
# Может быть случайное совпадение
password = 'суперсекрет'
found = 'секрет' in password  # Секрет разгадан! Возвращает True

Динамическое создание шаблонов с помощью f-строк

В Python 3.6 и выше возможно использование f-строк для гибкого формирования шаблонов:

Python
Скопировать код
pattern = re.compile(rf'\b{word}\b')  # 'word' напрямую в f-строке, удобно, не так ли?
found = bool(pattern.search(phrase))

Визуализация

Визуализируйте библиотеку (📚), где каждая книга — это отдельная строка в Python:

Markdown
Скопировать код
В нашей библиотеке можно найти:
- 📖 Руководство по Python
- 📘 Сборник рецептов кода
- 📗 Основы программирования

Ищем слово 'функция':

Python
Скопировать код
'функция' in 'Руководство по Python'  # 🕵️‍♂️: "Содержит ли эта книга слово 'функция'?"

Наглядно отобразим результаты поиска:

Markdown
Скопировать код
📖: ❌ (Не обнаружено)
📘: ✅ (Нашлось слово "функция"!)
📗: ❌ (Требуемого слова не обнаружено)

Мы исследовали библиотеку и выяснили, в какой книге содержится нужное нам слово!

Менее популярные методы Python

У вас есть опыт использования функции str.find()? Это еще один метод для поиска слов:

Python
Скопировать код
index = phrase.find(word)
found = index >= 0
print(found)  # Вернёт True, если слово 'точно' помимо всего прочего обнаружено в фразе.

Однако учтите: str.find() может быть медленнее, чем in или регулярные выражения, если дело касается проверки наличия слов в тексте.

Особенности методов работы со строками

Метод str.count() также может пригодиться, но не забывайте о следующем:

Python
Скопировать код
count = phrase.count(word)
print(count > 0)  # Вернёт True, если слово 'точно' встречается в фразе хотя бы один раз.

Как и с in, метод str.count() засчитывает вхождения слова в качестве части других слов, например, 'точности'.

Когда "точное" совпадение — не ваша итоговая цель

Иногда частичное совпадение — это именно то, что вам нужно:

Python
Скопировать код
if 'акт' in phrase:
    print('Обнаружено частичное совпадение!')  # 'акт' найдено в слове 'точно'

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

Полезные материалы

  1. Встроенные типы — Документация Python 3.12.2 — освежите в памяти все методы работы со строками.
  2. Проверка наличия слова в строке в Python – Stack Overflow — изучите опыт сообщества разработчиков.
  3. re — Операции с регулярными выражениями — Документация Python 3.12.2 — поймите суть использования регулярных выражений.
  4. Учебник по регулярным выражениям — \b Границы слов — понимайте, как формируются границы слов в контексте регулярных выражений.
  5. Метод find() строк в Python – Tutorialspoint — подробно изучите работу метода find().
  6. Метод count() строк в Python – W3Schools — начните эффективно использовать метод count().