Проверка того, содержит ли строка подстроку, помогает обобщить условные выражения и создать более гибкий код. Кроме того, в зависимости от модели вашего домена проверка наличия подстроки в строке может также позволить вам вывести поля объекта, если строка кодирует поле сама по себе.
В этом руководстве мы рассмотрим как проверить, содержит ли строка подстроку в Python.
Ассоциация in оператор
Самый простой способ проверить, содержит ли строка Python подстроку, — использовать метод in
оператор.
Ассоциация in
Оператор используется для проверки структур данных на членство в Python. Он возвращает логическое значение (либо True
or False
). Чтобы проверить, содержит ли строка подстроку в Python, используя in
оператор, мы просто вызываем его для суперстроки:
fullstring = "StackAbuse"
substring = "tack"
if substring in fullstring:
print("Found!")
else:
print("Not found!")
Этот оператор является сокращением для вызова объекта __contains__
метод, а также хорошо работает для проверки наличия элемента в списке. Стоит отметить, что это не нулевой безопасный, поэтому, если наш fullstring
указывал на None
, будет выдано исключение:
TypeError: argument of type 'NoneType' is not iterable
Чтобы избежать этого, сначала вам нужно проверить, указывает ли он на None
или нет:
fullstring = None
substring = "tack"
if fullstring != None and substring in fullstring:
print("Found!")
else:
print("Not found!")
Ассоциация Строка.индекс() Способ доставки
Тип String в Python имеет метод под названием index()
его можно использовать для поиска начального индекса первого вхождения подстроки в строку.
Если подстрока не найдена, ValueError
выдается исключение, которое можно обработать с помощью блока try-Exception-else:
fullstring = "StackAbuse"
substring = "tack"
try:
fullstring.index(substring)
except ValueError:
print("Not found!")
else:
print("Found!")
Этот метод полезен, если вам также необходимо знать положение подстроки, а не просто ее существование внутри полной строки. Сам метод возвращает индекс:
print(fullstring.index(substring))
Хотя – ради проверки того, содержит ли строка подстроку, это многословный подход.
Метод String.find()
В классе String есть еще один метод, называемый find()
который удобнее использовать, чем index()
, главным образом потому, что нам не нужно беспокоиться об обработке каких-либо исключений.
If find()
не находит совпадения, возвращает -1, в противном случае возвращает самый левый индекс подстроки в большей строке:
Ознакомьтесь с нашим практическим руководством по изучению Git с рекомендациями, принятыми в отрасли стандартами и прилагаемой памяткой. Перестаньте гуглить команды Git и на самом деле изучить это!
fullstring = "StackAbuse"
substring = "tack"
if fullstring.find(substring) != -1:
print("Found!")
else:
print("Not found!")
Естественно, он выполняет тот же поиск, что и index()
и возвращает индекс начала подстроки в родительской строке:
print(fullstring.find(substring))
Регулярные выражения (RegEx)
Регулярные выражения предоставляют более гибкий (хотя и более сложный) способ проверки строк на соответствие шаблону. С помощью регулярных выражений вы можете выполнять гибкий и мощный поиск в гораздо больших пространствах поиска, а не простые проверки, как предыдущие.
Python поставляется со встроенным модулем для регулярных выражений, который называется re
, re
модуль содержит функцию под названием search()
, который мы можем использовать для сопоставления шаблона подстроки:
from re import search
fullstring = "StackAbuse"
substring = "tack"
if search(substring, fullstring):
print "Found!"
else:
print "Not found!"
Этот метод лучше всего подходит, если вам нужна более сложная функция сопоставления, например сопоставление без учета регистра, или если вы имеете дело с большими пространствами поиска. В противном случае следует избегать усложнения и более медленной скорости регулярного выражения для простых случаев использования сопоставления подстроки.
Об авторе
Эта статья была написана Джейкобом Стопаком, консультантом по программному обеспечению и разработчиком, страстно желающим помогать другим улучшить свою жизнь с помощью кода. Джейкоб — создатель Начальная фиксация – сайт, призванный помочь любознательным разработчикам узнать, как написаны их любимые программы. Представленный проект помогает людям изучить Git на уровне кода.