Даны две строки определите является ли первая строка подстрокой второй строки python

Проверка: содержит ли строка другую строку в Python

Манипуляции со строками – обычная задача любого языка программирования. Python предоставляет два распространенных способа проверить, содержит ли строка другую строку.

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

Он возвращает True, если «sub» строка является частью «str», в противном случае возвращает False.

Давайте посмотрим на несколько примеров использования оператора in в Python.

str1 = 'I love Python Programming' str2 = 'Python' str3 = 'Java' print(f'"" contains "" = ') print(f'"" contains "" = ') print(f'"" contains "" = ') if str2 in str1: print(f'"" contains ""') else: print(f'"" does not contain ""')
"I love Python Programming" contains "Python" = True "I love Python Programming" contains "python" = False "I love Python Programming" contains "Java" = False "I love Python Programming" contains "Python"

используя оператор in

Когда мы используем оператор in, он внутри вызывает функцию __contains __(). Мы также можем использовать эту функцию напрямую, однако для удобства чтения рекомендуется использовать оператор in.

s = 'abc' print('s contains a =', s.__contains__('a')) print('s contains A =', s.__contains__('A')) print('s contains X =', s.__contains__('X'))
s contains a = True s contains A = False s contains X = False

Использование find() для проверки наличия в строке другой подстроки

Мы также можем использовать функцию string find(), чтобы проверить, содержит ли строка подстроку или нет. Эта функция возвращает первую позицию индекса, в которой найдена подстрока, иначе возвращает –1.

str1 = 'I love Python Programming' str2 = 'Python' str3 = 'Java' index = str1.find(str2) if index != -1: print(f'"" contains ""') else: print(f'"" does not contain ""') index = str1.find(str3) if index != -1: print(f'"" contains ""') else: print(f'"" does not contain ""')
"I love Python Programming" contains "Python" "I love Python Programming" does not contain "Java"

Источник

Читайте также:  Php replace in include

Проверьте, является ли данная строка подстрокой другой строки в Python

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

1. Использование str.find() функция

Решение Pythonic для поиска позиции первого вхождения подстроки в строке использует str.find() функция. Он возвращается -1 когда подстрока не найдена.

print ( f «Substring `` is found at index » )

результат:

Substring ABC is found at index 0

Если вам нужен индекс последней позиции подстроки в строке, вы можете использовать rfind() функция.

print ( f «Substring `` is found at index » )

результат:

Substring ABC is found at index 4

2. Использование str.index() функция

В качестве альтернативы вы можете использовать str.index() функция, похожая на str.find() функционируют, но повышают ValueError когда подстрока не найдена.

результат:

Substring ABC is found at index 0

Если вам нужен индекс последней позиции подстроки в строке, вы можете использовать rindex() функция.

результат:

Substring ABC is found at index 4

3. Использование In оператор

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

Источник

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

Favorite

Добавить в избранное

Главное меню » Программирование » Python » Проверьте, содержит ли строка подстроку в Python

Python 3 - Строки

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

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

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

Стоит отметить, что вы получите логическое значение (True или False) или целое число, чтобы указать, содержит ли строка то, которую вы искали. Вы узнаете об этом больше, когда мы покажем код ниже.

Давайте посмотрим на возможные решения, с помощью которых вы можете найти, содержит ли строка конкретное слово/букву.

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

Предположим, у вас уже есть строка «str», вот как она будет выглядеть:

stringexample = "terminator" "ter" in str

Выход для этого будет «True», потому что строка содержит то, что мы искали. Таким образом, если вы ищете что-то, а в строке этого нет, вы получите «False» в качестве вывода.

Если вы все еще не уверены, позвольте нам написать небольшую программу, чтобы объяснить то же самое:

stringexample = "Terminator" substring = "ter" if substring in stringexample: print ("Мы нашли строку!") else: print ("Строка не найдена!")

Выход для вышеуказанного кода будет:

Метод 2: Использование метода поиска

Если вы хотите использовать метод для поиска подстроки, вы можете использовать функция find(). Вот как это сделать:

stringexample = "kiki" stringexample.find("ki")

Причина вывода в том, что эта функция возвращает самое низкое значение индекса, когда найдена подстрока.

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

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

stringexample = "Kiki" substring = "ki" if stringexample.find("ki") != -1: print ("Мы нашли строку!") else: print ("Строка не найдена!")

Выход для вышеуказанного кода будет:

Метод 3: Использование метода Contains

__contains __ () — еще одна функция, помогающая проверить, содержит ли строка определенную букву/слово.

Вот как вы можете использовать это:

stringexample = "kiki" stringexample.__contains__("k")

Вы получите вывод как True/False. Для приведенного выше фрагмента кода вы получите вывод в виде:

Обратите внимание, что при написании метода используются 4 символа подчеркивания (2 перед словом и 2 после).

Вот программа, чтобы объяснить то же самое:

stringexample = "kiki" if stringexample.__contains__("k") == True: print ("Да, нашел подстроку!") else: print ("Строка не найдена!")

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

Если у вас есть вопросы или предложения, пожалуйста, дайте нам знать.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

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