Python String Contains: Проверка Наличия Подстроки в Строке
В этом руководстве вы узнаете, как использовать Python для проверки, содержит ли строка другую подстроку. Существует несколько способов использовать Python для проверки строки на наличие подстроки, включая нечувствительность к регистру, проверку шаблонов и многое другое. Умение работать со строками в Python — важный навык для программиста любого уровня.
К концу этого урока вы узнаете:
Как использовать Python для проверки наличия подстроки в строке с помощью оператора
in
, метода.index()
, метода.find()
и т. д.Как игнорировать чувствительность к регистру при проверке, содержит ли строка Python подстроку
Фильтрация DataFrame Pandas, если столбец содержит подстроку
Проверка наличия в строке подстроки шаблона с использованием регулярного выражения
Оглавление
Проверка того, содержит ли строка Python подстроку с помощью in
in
Самый простой и "питоничный" способ проверить, содержит ли строка в Python подстроку, — использовать оператор in
. Этот оператор ясно выражает, что вы пытаетесь достичь, и делает ваш код понятным любому читателю.
Оператор in
вернет логическое значение: True
, если подстрока найдена в строке, и False
, если нет. Давайте рассмотрим пример:
В приведенном выше примере мы использовали оператор in
, чтобы проверить, существует ли подстрока 'bemind'
в большей строке.
Здесь важно заметить, что оператор не проверяет, где находится подстрока, а только то, что она существует. В следующем разделе вы узнаете, как определить, где подстрока находится в более длинной строке.
Проверка того, содержит ли строка Python подстроку с помощью find
Метод поиска строки Python позволяет возвращать начальный индекс подстроки, если она существует. Это аналогично многим другим языкам, которые явно не поддерживают оператор in
Метод string.find()
имеет две возможности для возвращаемых значений:
Положительное целое число, представляющее начальный индекс первого вхождения подстроки
-1
, если подстрока не существует
Давайте рассмотрим, как мы можем использовать метод .find()
, чтобы проверить, существует ли подстрока в строке на Python:
Можно увидеть, что, поскольку строка содержит подстроку, она возвращает положительное значение индекса. Когда возвращается положительное значение индекса, условный оператор if-else
выводит, что строка существует.
Проверка того, содержит ли строка Python подстроку с .index()
.index()
Метод index
строки Python ищет подстроку в более широкой строке Python и возвращает начальный индекс, если подстрока существует. Это очень похоже на метод .find()
, который мы рассмотрели в предыдущем разделе.
Одним из ключевых различий между методами Python .find()
и .index()
является то, что метод .index()
вызовет ValueError
, если подстрока не найдена.
Это означает, что для использования этого метода, мы можем повторить наш предыдущий пример, за исключением того, что мы обернем его в блок try-except
. Давайте посмотрим, как это работает:
Проверка того, содержит ли строка Python подстроку со счетчиком
Метод count() в Python можно использовать для проверки, содержит ли строка подстроку, подсчитывая количество её вхождений в исходной строке. Метод вернёт количество вхождений подстроки. Это значит, что если подстрока не существует, метод вернёт 0.
Давайте посмотрим, как мы можем использовать метод .count()
, чтобы проверить, содержит ли строка в Python подстроку:
Причина, по которой это работает, заключается в том, что если строка не содержит подстроку, количество будет 0
. В Python значение 0
оценивается как логическое False
. Это означает, что блок else
срабатывает.
Фильтрация списка строк, если они содержат подстроку
В этом разделе мы будем использовать оператор in
, чтобы отфильтровать список строк на наличие подстроки. Для этого мы можем использовать цикл for для прохода по каждому элементу в списке и проверки наличия подстроки. Если она есть, то мы добавляем этот элемент в другой список.
Посмотрим на пример:
Мы можем значительно упростить этот подход с использованием включений списков, как показано ниже:
Проверка наличия подстроки в строке Python без учета регистра
В этом разделе вы узнаете, как проверить, содержит ли строка в Python подстроку без учета регистра. Самый простой способ сделать это — проверить обе строки в их пониженных представлениях, использования метода .lower()
.
Затем мы можем использовать оператор in
, чтобы проверить, находится ли подстрока в большей строке:
В приведенном выше примере мы представляем подстроку и более широкую строку в их нижнем регистре. Это гарантирует, что, независимо от регистра, подстрока может быть найдена, если она существует.
Проверка того, содержит ли строка Python образец текста
В этом разделе вы узнаете, как проверить, содержит ли строка в Python определённый шаблон текста. Это может быть полезно, например, если вам нужно проверить, содержит ли строка адрес электронной почты. Мы можем сделать это с помощью мощной библиотеки регулярных выражений, re
.
Давайте рассмотрим, как мы можем сделать это с использованием Python:
В приведенном выше примере мы создаем шаблон, который проверяет строки, точки и дефисы, за которыми следует символ @, и которому предшествует ранее созданный шаблон.
Преобразуя объект re.search()
в логическое значение, результат будет возвращать True
, если шаблон найден, и False
, если нет.
Проверка наличия подстроки в столбце Pandas
В этом разделе вы узнаете, как проверить, содержит ли столбец Pandas подстроку. Это может быть очень полезно для фильтрации DataFrame Pandas на основе столбца, содержащего подстроку.
Pandas делает это легко с помощью метода str.contains()
, который проверяет, содержит ли строка подстроку. Давайте посмотрим на пример:
В приведенном выше примере мы фильтруем DataFrame Pandas, чтобы включить только строки, где столбец 'b'
содержит подстроку
Заключение
В этом уроке вы узнали, как использовать Python для проверки наличия подстроки в строке. Существует несколько способов достичь этого, но самый "pythonic" и чистый способ — использование оператора in
. Тем не менее, знание использования методов .find()
, .index()
и .count()
также сделает вас более сильным программистом.
Вы также узнали, как проверить, содержит ли строка Python подстроку без учета регистра, и как проверить наличие шаблона в более широкой строке. Наконец, вы узнали, как отфильтровать DataFrame в Pandas, если подстрока найдена в строке.
Дополнительные ресурсы
Чтобы узнать больше о связанных темах, ознакомьтесь с руководствами ниже:
Как объединить строки в Python: полное руководство
Как проверить, пуста ли строка в Python
Python zfill & rjust: заполнение строки в Python
Python: удалить символ из строки (4 способа)
Last updated