Проверка содержит ли строка подстроку python

Как проверить, содержит ли строка подстроку в Python?

Чтобы проверить, содержит ли данная строка конкретную подстроку в Python, используйте оператор in.

Синтаксис условия для проверки наличия в строке определенной подстроки:

Вышеприведенное выражение возвращает True, если подстрока присутствует в строке, или False, если подстрока отсутствует в строке.

Пример 1

В этом примере мы возьмем две строки: одна – наша основная строка, а другая – подстрока. А с помощью оператора in мы проверим, присутствует ли подстрока в основной строке.

string = 'Hello World!' substring = 'Wor' isSubstringPresent = substring in string print(isSubstringPresent)

Поскольку оператор in возвращает логическое значение, вы можете использовать это выражение в качестве условия в операторе if.

В следующем примере мы проверим, содержит ли строка подстроку, и на основе результата мы выполним блок кода условно, используя оператор if.

string = 'Hello World!' substring = 'Wor' if substring in string: print('String contains substring.') else : print('String does not contain substring.')
String contains substring.

Другие способы проверки

Вы также можете использовать другие методы, такие как string.find(), чтобы проверить, содержит ли строка подстроку. string.find (substring) возвращает индекс подстроки в строке. Если подстрока присутствует в строке, то функция возвращает неотрицательное целое число. Мы можем использовать это как условие и проверить, содержит ли строка подстроку.

string = 'Hello World!' substring = 'Wor' if string.find(substring) > -1: print('String contains substring.') else : print('String does not contain substring.')
String contains substring.

В этом руководстве примеров в Python мы узнали, как проверить, содержит ли данная строка определенную подстроку, используя оператор in и другие методы.

Читайте также:  Installing fonts in html

Проверка, содержит ли строка подстроку из списка

Чтобы проверить, содержит ли строка подстроку из списка строк, выполните итерацию по списку строк и для каждого элемента в списке проверьте, присутствует ли элемент в данной строке.

  • исходную строку, в которой мы должны проверить, присутствует ли какая-либо подстрока;
  • список строк, элементы которых могут встречаться в исходной строке, и мы должны определить, встречается ли какая-либо из этих строк в списке в исходной строке.

Пример 1

В этом примере мы возьмем исходную строку и список строк. Мы будем использовать цикл for, чтобы проверить, присутствует ли строка из списка как подстрока в исходной строке.

source_string = 'a b c d e f' list_of_strings = ['k', 'm', 'e' ] for substring in list_of_strings: if substring in source_string: print('String contains substring from list.') break
String contains substring from list.

Поскольку элемент из списка ‘e’ присутствует как подстрока в исходной строке, во время выполнения цикла for для элемента ‘e’ условие в цикле if становится True.

Резюме

В этом руководстве примеров в Python мы узнали, как проверить, содержит ли строка подстроку из списка строк, с помощью программы-примера.

Источник

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

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

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 "Подстрока не найдена!"

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

Источник

Python поиск в строке

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

Если вы раньше (до перехода на Python) писали код, скажем, на Java, для подобной проверки вы могли использовать метод contains.

В Python есть два способа достичь той же цели.

1. Использование оператора in

Самый простой способ проверить, содержится ли в строке другая строка, это использовать оператор Python in .

Давайте рассмотрим пример.

>>> str = "Messi is the best soccer player" >>> "soccer" in str True >>> "football" in str False

Как видите, оператор in возвращает True , если указанная подстрока является частью строки. В противном случае он возвращает False .

Этот метод очень простой, понятный, читаемый и идиоматичный.

2. Использование метода find

Также для проверки вхождения одной строки в другую можно использовать строковый метод find .

В отличие от оператора, возвращающего булево значение, метод find возвращает целое число.

Это число является по сути индексом начала подстроки, если она есть в указанной строке. Если этой подстроки в строке не содержится, метод возвращает -1 .

Давайте посмотрим, как работает метод find .

>>> str = "Messi is the best soccer player" >>> str.find("soccer") 18 >>> str.find("Ronaldo") -1 >>> str.find("Messi") 0

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

>>> str = "Messi is the best soccer player" >>> str.find("soccer", 5, 25) 18 >>> str.find("Messi", 5, 25) -1

Обратите внимание, что для подстроки «Messi» метод вернул -1 . Это произошло потому, что мы ограничили поиск в строке промежутком символов с индексами от 5-го до 25-го.

Более сложные способы

Представьте на минутку, что в Python нет никаких встроенных функций или методов, позволяющих проверить, входит ли одна строка в другую. Как бы вы написали функцию для этой цели?

Можно использовать брутфорс-подход и на каждой возможной позиции в строке проверять, начинается ли там искомая подстрока. Но для длинных строк этот процесс будет очень медленным.

Есть лучшие алгоритмы поиска строк. Если вы хотите углубиться в эту тему, можем порекомендовать статью «Rabin-Karp and Knuth-Morris-Pratt Algorithms». Также вам может пригодиться статья «Поиск подстроки» в Википедии.

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

Для поиска ответов на подобные вопросы практически всегда нужно углубиться в исходный код. В этом плане вам повезло: Python это технология с открытым кодом. Давайте же в него заглянем.

Python поиск в строке

Как удачно, что разработчики прокомментировали свой код! Теперь нам совершенно ясно, что метод find использует смесь алгоритмов Бойера-Мура и Бойера-Мура-Хорспула.

Заключение

Для проверки, содержится ли указанная строка в другой строке, в Python можно использовать оператор in или метод find .

Оператор in возвращает True , если указанная подстрока является частью другой строки. В противном случае он возвращает False .

Метод find возвращает индекс начала подстроки в строке, если эта подстрока там есть, или -1 — если подстрока не найдена.

CPython использует для поиска строк комбинацию алгоритмов Бойера-Мура и Бойера-Мура-Хорспула.

Источник

Строка Python содержит: проверьте, содержит ли строка подстроку

В Python много раз, когда вы работаете с подстроками, вы хотите определить, находится ли подстрока внутри другой строки или нет, для этого может быть много причин, таких как поиск и фильтрация данных, проверка ввода и т. д. Для этого Python предоставляет нам с простым и эффективным методом для выполнения этой задачи.

В этой статье будут показаны различные встроенные функции для проверки наличия в строке подстроки в Python. Основная функция, которой мы уделяем основное внимание в этой статье, — это метод Python __contains__(), так что давайте начнем.

Методы проверки, содержит ли строка Python подстроку

Python предлагает множество способов проверить, содержит ли строка другие подстроки или нет. Некоторые из них приведены ниже:

  1. Использование метода find()
  2. Использование оператора in
  3. Использование метода index()
  4. Использование регулярного выражения
  5. Использование строки __contains__()

Оператор «in», методы find() и index() часто используются разработчиками для проверки подстроки в строке, и мы прикрепили ссылку к нашему руководству по каждому вышеупомянутому строковому методу, чтобы вы могли их прочитать. тоже, но в этом уроке мы будем использовать встроенную функцию __contains__().

Строка Python содержит

Строковая функция Python __contains__() может использоваться со строковым объектом, она принимает подстроку в качестве аргумента и возвращает True, если подстрока присутствует в строке.

string.__contains__(substring)

Здесь подстрока — это строка, которую вы хотите найти, а строка — это строковый объект, в котором вы хотите искать.

Возвращаться:

Тип возвращаемого значения этой функции — логическое значение, либо True, либо False, в зависимости от того, найдена ли подстрока в указанной строке.

Пример использования метода String __contains__()

Давайте рассмотрим несколько примеров того, как проверить, содержит ли строка подстроку в Python.

Пример 1

str = "Hello World!" sub_str = "World" if (str.__contains__(sub_str)): print("String contains Substring") else: print("String does not contain Substring")

Здесь мы указали строку, а затем подстроку, обе содержащие какой-либо символ, а затем мы использовали оператор if и использовали метод string.__contains__(), который возвращает True, если указанная нами подстрока присутствует в строке, и если поэтому оператор внутри оператора if будет выполняться, в противном случае будет выполнен оператор внутри оператора else.

String contains Substring

Поскольку «Мир» является подстрокой исходной строки «Hello World!», возвращаемое значение равно True и выполняется оператор if.

Пример 2

Попробуем проверить наличие подстроки «мир».

str = "Hello World!" sub_str = "world" if (str.__contains__(sub_str)): print("String contains Substring") else: print("String does not contain Substring")
String does not contain Substring

Этот метод чувствителен к регистру, поэтому строка «мир» считается отличной от строки «Мир», поэтому он возвращает False, и выполняется оператор внутри блока else.

Избегайте использования метода String __contains__()

Логики программирования, запрещающей использование метода __contains__(), нет, но есть несколько причин, по которым его использовать не рекомендуется.

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

  1. Читаемость кода: ясно, что там, где другой метод выглядит читабельным, метод __contains__ выглядит сложным.
  2. Ограниченная функциональность: этот метод может проверять только одну строку, он не может выполнять сложные операции со строками.
  3. Не подходит для сложных структур данных: метод __contains__ не может правильно работать со сложными структурами данных, имеющими несколько уровней вложенности, или объектами со сложными отношениями.
  4. Альтернативы: Другая причина в том, что существует множество альтернатив, о которых мы упоминали в начале этого руководства, которые более надежны и похожи на этот метод, поэтому нет смысла его использовать.

Заключение

В этой статье мы научились использовать метод string.__contains__(), чтобы узнать, присутствует ли подстрока внутри строки или нет, если подстрока найдена, она возвращает True, если подстрока не найдена, она возвращает False. Это не лучший способ проверить, появляется ли подстрока в строке, но он самый быстрый. Надеюсь, вам понравилось читать этот урок.

Источник

Оцените статью