Строки

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

В этой статье мы расскажем о четырех способах найти подстроку в строке. У каждого способа есть плюсы и минусы — о них мы также кратко поговорим.

1) Оператор in

Простейший способ проверить наличие подстроки в строке — оператор in. Он используется для проверки наличия элемента в какой-либо структуре данных. Этот оператор возвращает булево значение — True или False. Пример:

fullstring = "pythonist"
substring = "python"

if substring in fullstring:
    print "Подстрока найдена!"
else:
    print "Подстрока не найдена!"

Этот оператор — сокращенный вызов метода __contains__. Он подходит и для проверки наличия элемента в списке

2) Метод String.index()

Тип string имеет метод index. Он возвращает наименьший индекс, по которому обнаруживается начало подстроки в строке. Если подстрока не найдена, то возбуждается исключение ValueError. Реализовать его можно с помощью блока try-except-else.

fullstring = "pythonist"
substring = "python"

try:
    fullstring.index(substring)
except ValueError:
    print "Подстрока не найдена!"
else:
    print "Подстрока найдена!"

Этот метод может особенно пригодиться, если вам нужно найти индекс подстроки, а не просто узнать о ее существовании.

3) Метод String.find()

Тип string имеет еще один метод — find. Он удобнее, чем index, потому что благодаря ему нам не нужно думать об обработке ошибок. Если метод не находит подстроку в строке, он возвращает -1. В случае успеха он возвращает наименьший индекс, по которому обнаруживается подстрока.

fullstring = "pythonist"
substring = "python"

if fullstring.find(substring) != -1:
    print "Подстрока найдена!"
else:
    print "Подстрока не найдена!"

Если вы не хотите обрабатывать ошибки — отдайте предпочтение этому методу, а не index.

4) Регулярные выражения (REGEX)

Регулярные выражения — более гибкий способ нахождения подстрок в строках. В Python есть встроенный модуль, позволяющий работать с регулярными выражениями, — re. Модуль re содержит функцию search, которая позволит вам найти подстроку: 

from re import search

fullstring = "pythonist"
substring = "python"

if search(substring, fullstring):
    print "Подстрока найдена!"
else:
    print "Подстрока не найдена!"

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

artur

Recent Posts

Библиотека Pydantic: валидация данных на Python

Pydantic - это мощная библиотека проверки данных и управления настройками для Python, созданная для повышения…

1 неделя ago

7 наилучших библиотек визуализации Python на 2024 год

Python предлагает набор библиотек, удовлетворяющих различные потребности в визуализации, будь то академические исследования, бизнес-аналитика или…

2 недели ago

Как преобразовать строку в байты в Python

В Python для представления данных в двоичной форме можно использовать байты. Из этой статьи вы…

3 недели ago

Что такое Werkzeug?

В этой статье рассказывается о том, что такое Werkzeug и как Flask использует его для…

3 недели ago

Как прибавить дни, месяцы и годы к дате в Python

При работе с датами часто возникает необходимость прибавлять к дате или вычитать из нее различные…

1 месяц ago

Социальная аутентификация в приложении на Flask

В этом руководстве мы рассмотрим, как добавить социальную аутентификацию с помощью GitHub и Google в…

2 месяца ago