В этой статье мы рассмотрим четыре способа использования Python, чтобы проверить, содержит ли строка подстроку. У каждого есть свои варианты использования и плюсы / минусы, некоторые из которых мы кратко рассмотрим здесь:
1) Оператор in
Самый простой способ проверить, содержит ли строка Python подстроку, -
использовать оператор in
Оператор in
используется для проверки
структур данных на принадлежность к Python. Он возвращает логическое
значение ( True
или False
) и может использоваться следующим
образом:
fullstring = "StackAbuse"
substring = "tack"
if substring in fullstring:
print "Found!"
else:
print "Not found!"
Этот оператор является сокращением для вызова __contains__
объекта, а
также хорошо работает для проверки наличия элемента в списке.
2) Метод String.index()
Тип String в Python имеет метод, называемый index
который можно
использовать для поиска начального индекса первого вхождения подстроки в
строку. Если подстрока не найдена, ValueError
исключение ValueError,
которое можно обработать с помощью блока try-except-else:
fullstring = "StackAbuse"
substring = "tack"
try:
fullstring.index(substring)
except ValueError:
print "Not found!"
else:
print "Found!"
Этот метод полезен, если вам нужно знать позицию подстроки, а не просто ее наличие в полной строке.
3) Метод String.find()
Тип String имеет другой метод, называемый find
который более удобен в
использовании, чем index
, потому что нам не нужно беспокоиться об
обработке каких-либо исключений. Если find
не находит совпадения, он
возвращает -1, в противном случае он возвращает крайний левый индекс
подстроки в большей строке.
fullstring = "StackAbuse"
substring = "tack"
if fullstring.find(substring) != -1:
print "Found!"
else:
print "Not found!"
Если вы предпочитаете избегать перехвата ошибок, предпочтение следует
отдавать этому методу, а не index
.
4) Регулярные выражения (REGEX)
Регулярные выражения предоставляют более гибкий (хотя и более сложный)
способ проверки строк на соответствие шаблону. Python поставляется со
встроенным модулем для регулярных выражений, который называется re
.
Модуль re
содержит функцию под названием search
, которую мы можем
использовать для сопоставления с шаблоном подстроки следующим образом:
from re import search
fullstring = "StackAbuse"
substring = "tack"
if search(substring, fullstring):
print "Found!"
else:
print "Not found!"
Этот метод лучше всего подходит, если вам нужна более сложная функция сопоставления, например сопоставление без учета регистра. В противном случае следует избегать усложнения и более медленной скорости регулярного выражения для простых случаев использования сопоставления подстрок.
об авторе
Эта статья была написана Якобом Стопаком, консультантом по программному обеспечению и разработчиком, стремящимся помочь другим улучшить свою жизнь с помощью кода. Джейкоб является создателем Initial Commit - сайта, посвященного тому, чтобы помочь любознательным разработчикам узнать, как написаны их любимые программы. Его избранный проект помогает людям изучать Git на уровне кода.