Python строка содержит подстроку: содержит ли строка подстроку в Python на примерах

содержит ли строка подстроку в Python на примерах

Автор В. Дронов

/

22.03.2021

/

Строки в Python /

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

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

substring in string

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

Пример 1

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

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

Вывод:

True

Поскольку оператор 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 и другие методы.

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

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

В этом скрипте мы имеем:

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

Пример 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 мы узнали, как проверить, содержит ли строка подстроку из списка строк, с помощью программы-примера.

This div height required for enabling the sticky sidebar

Проверка вхождения одной строки в другую в Python

Как проверить, содержит ли строка 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 это технология с открытым кодом. Давайте же в него заглянем.

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

Заключение

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

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

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

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

Английский для программистов

Наш телеграм канал с тестами по английскому языку для программистов.

Английский это часть карьеры программиста. Поэтому полезно заняться им уже сейчас

Скачать

×

Как проверить, содержит ли строка Python подстроку — настоящий Python Питон.

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

В этом руководстве вы сосредоточитесь на самом Pythonic способе решения этой задачи, используя оператор членства в . Кроме того, вы узнаете, как определить правильные строковые методы для связанных, но разных вариантов использования.

Наконец, вы также узнаете, как находить подстроки в столбцах pandas . Это полезно, если вам нужно выполнить поиск данных из CSV-файла. Вы могли бы использовать подход, который вы узнаете в следующем разделе, но если вы работаете с табличные данные , лучше всего загрузить данные в pandas DataFrame и искать подстроки в pandas.

Как убедиться, что строка Python содержит другую строку

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

.

>>>

 >>> raw_file_content = """Привет и добро пожаловать.
... Это специальный скрытый файл с СЕКРЕТНЫМ секретом.
... Я не хочу раскрывать тебе Секрет,
... но я хочу по секрету сказать вам, что он у меня есть."""
>>> "секрет" в raw_file_content
Истинный
 

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

Примечание: Если вы хотите проверить, является ли подстрока , а не в строке, вы можете использовать не в :

>>>

 >>> "secret" не в raw_file_content
ЛОЖЬ
 

Поскольку подстрока "секретная" присутствует в raw_file_content , оператор не в возвращает False .

При использовании в выражение возвращает логическое значение:

  • Истинно , если Python нашел подстроку
  • Ложь , если Python не нашел подстроку

Вы можете использовать этот интуитивно понятный синтаксис в условных операторах для принятия решений в вашем коде:

>>>

 >>> если "секрет" в raw_file_content:
... печать("Найдено!")
...
Найденный!
 

В этом фрагменте кода вы используете оператор принадлежности, чтобы проверить, является ли "secret" подстрокой raw_file_content . Если это так, то вы напечатаете сообщение на терминал. Любой код с отступом будет выполняться только в том случае, если проверяемая вами строка Python содержит предоставленную вами подстроку.

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

Однако что, если вы хотите узнать больше о подстроке? Если вы прочитаете текст, хранящийся в raw_file_content , то вы заметите, что подстрока встречается более одного раза и даже в разных вариациях!

Какие из этих вхождений нашел Python? Имеет ли значение заглавная буква? Как часто эта подстрока встречается в тексте? И каково расположение этих подстрок? Если вам нужен ответ на любой из этих вопросов, продолжайте читать.