- Проверка: содержит ли строка другую строку в Python
- Использование find() для проверки наличия в строке другой подстроки
- Python поиск в строке
- 1. Использование оператора in
- 2. Использование метода find
- Более сложные способы
- Заключение
- Строка Python содержит: проверьте, содержит ли строка подстроку
- Методы проверки, содержит ли строка Python подстроку
- Строка Python содержит
- Пример использования метода String __contains__()
- Пример 1
- Пример 2
- Избегайте использования метода String __contains__()
- Заключение
- Проверьте, содержит ли строка подстроку в Python
- Как проверить, содержит ли строка подстроку
- Способ 1. Использование оператора «in»
- Метод 2: Использование метода поиска
- Метод 3: Использование метода Contains
Проверка: содержит ли строка другую строку в 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, он внутри вызывает функцию __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"
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 много раз, когда вы работаете с подстроками, вы хотите определить, находится ли подстрока внутри другой строки или нет, для этого может быть много причин, таких как поиск и фильтрация данных, проверка ввода и т. д. Для этого Python предоставляет нам с простым и эффективным методом для выполнения этой задачи.
В этой статье будут показаны различные встроенные функции для проверки наличия в строке подстроки в Python. Основная функция, которой мы уделяем основное внимание в этой статье, — это метод Python __contains__(), так что давайте начнем.
Методы проверки, содержит ли строка Python подстроку
Python предлагает множество способов проверить, содержит ли строка другие подстроки или нет. Некоторые из них приведены ниже:
- Использование метода find()
- Использование оператора in
- Использование метода index()
- Использование регулярного выражения
- Использование строки __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__ :
- Читаемость кода: ясно, что там, где другой метод выглядит читабельным, метод __contains__ выглядит сложным.
- Ограниченная функциональность: этот метод может проверять только одну строку, он не может выполнять сложные операции со строками.
- Не подходит для сложных структур данных: метод __contains__ не может правильно работать со сложными структурами данных, имеющими несколько уровней вложенности, или объектами со сложными отношениями.
- Альтернативы: Другая причина в том, что существует множество альтернатив, о которых мы упоминали в начале этого руководства, которые более надежны и похожи на этот метод, поэтому нет смысла его использовать.
Заключение
В этой статье мы научились использовать метод string.__contains__(), чтобы узнать, присутствует ли подстрока внутри строки или нет, если подстрока найдена, она возвращает True, если подстрока не найдена, она возвращает False. Это не лучший способ проверить, появляется ли подстрока в строке, но он самый быстрый. Надеюсь, вам понравилось читать этот урок.
Проверьте, содержит ли строка подстроку в Python
Добавить в избранное
Главное меню » Программирование » Python » Проверьте, содержит ли строка подстроку в Python
В 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.