Недавно я работал над проектом машинного обучения и обнаружил, что для него требуются некоторые элементы подстроки и проверка, доступны ли они в строке или нет. Итак, я провел небольшое исследование и обнаружил, что нам нужно проверить, содержит ли строка подстроку в Python.
- Методы
- Метод 1: используя оператор if-else и in
- Метод 2: с использованием метода Split()
- Способ 3: с использованием метода find()
- Способ 4: с использованием метода count()
- Метод 5: используя index()
- Способ 6: с использованием понимания списка
- Метод 7: с использованием лямбда-функции
- Метод 8: с использованием нарезки
- Метод 9: используя регулярное выражение
- Заключение
Методы
В Python существует множество способов проверить, содержит ли строка определенную подстроку. Давайте рассмотрим их все по отдельности, используя несколько наглядных примеров:
Метод 1: используя оператор if-else и in
Оператор in проверяет наличие одной строки внутри другой в Python. Он возвращает True, если подстрока существует, и False в противном случае. Этот подход прост и часто является лучшим выбором в Python из-за его ясности.
Пример: рассмотрим ситуацию, когда мы проверяем, находится ли подстрока в предложении, хранящемся в Python в виде строки.
sentence = "I love visiting New York in the fall." if "New York" in sentence: print("The state is mentioned!") else: print("The state isn't mentioned!")
Вывод: в этом примере проверяется, присутствует ли подстрока внутри строки в Python. Поскольку это так, результат будет:
The state is mentioned!
Метод 2: с использованием метода Split()
Метод Split() в Python делит строку на список подстрок на основе указанного разделителя. Если подстрока существует в основной строке, длина результирующего списка будет больше 1. Если нет, длина будет равна 1.
Сценарий: в одном случае нам нужно разделить строку Python, чтобы проверить наличие упомянутой в ней подстроки или нет.
commentary = "The Yankees hit another home run!" if len(commentary.split("Yankees")) > 1: print("The Yankees are in this commentary!") else: print("The Yankees aren't mentioned!")
Вывод: Здесь метод Split() пытается разделить строку при каждом появлении подстроки. Если подстрока присутствует в строке Python, длина результирующего списка будет больше 1.
The Yankees are in this commentary!
Способ 3: с использованием метода find()
Метод find() в Python ищет подстроку и возвращает начальный индекс первого вхождения. Если подстрока не найдена, возвращается -1. Таким образом, проверив возвращаемое значение, можно определить наличие подстроки.
Пример: мы находим позицию подстроки, если она присутствует в строке в Python.
itinerary = "First, we'll visit Miami, then head to Los Angeles." position = itinerary.find("Los Angeles") if position != -1: print(f"Los Angeles is mentioned, starting at position {position}!") else: print("Los Angeles isn't in the itinerary.")
Вывод: метод find() ищет подстроку и возвращает ее начальный индекс в строке Python.
Los Angeles is mentioned, starting at position 39!
Способ 4: с использованием метода count()
Метод Python count() вычисляет, сколько раз подстрока появляется в основной строке. Если счетчик больше 0, это означает, что подстрока присутствует в строке в Python.
Сценарий: мы находимся в ситуации, когда нам нужно подсчитать, сколько раз подстрока упоминается в строке в Python.
text = "The Grand Canyon is a marvel. I've been to the Grand Canyon twice!" if text.count("Grand Canyon") > 0: print(f"The Grand Canyon is mentioned {text.count('Grand Canyon')} times!") else: print("The Grand Canyon isn't mentioned.")
Вывод: метод count() вычисляет вхождения подстроки в строку Python.
The Grand Canyon is mentioned 2 times!
Метод 5: используя index()
Метод index() в Python ищет подстроку и возвращает ее начальный индекс. Ключевое отличие состоит в том, что если подстрока не найдена, index() вызывает исключение ValueError в Python вместо возврата -1.
Пример: поиск того места, где упомянутая подстрока впервые присутствует в строке Python.
speech = "Today, we discuss various topics. President Biden has emphasized unity." try: position = speech.index("President Biden") print(f"President Biden is first mentioned at position {position}.") except ValueError: print("President Biden isn't mentioned in the speech.")
Вывод: метод index() ищет первое вхождение подстроки в строку Python и возвращает ее начальный индекс.
President Biden is first mentioned at position 34.
Способ 6: с использованием понимания списка
Понимание списка в Python предполагает создание списка, каждый элемент которого является частью основной строки длиной, равной подстроке. Функция понимания проверяет, соответствует ли какой-либо из этих разделов подстроке. Этот метод, хотя и интересен, может быть не самым эффективным для более длинных строк.
Сценарий: проверка упоминания подстроки в строке в Python.
dishes = "We have burgers, hot dogs, pizza, and tacos." burger_present = any([dishes[i:i+len("burgers")] == "burgers" for i in range(len(dishes))]) print("Burgers are on the menu!" if burger_present else "No burgers today.")
Вывод: этот код Python использует понимание списка для проверки каждой подстроки длины указанной подстроки и проверяет, соответствует ли какая-либо из них ей.
Burgers are on the menu!
Метод 7: с использованием лямбда-функции
Лямбда-функции в Python — это краткий способ определения небольших функций. Здесь мы создаем лямбда-функцию, которая использует оператор in для проверки наличия подстроки в Python.
Пример: рассмотрим ситуацию, когда нам нужно в Python проверить, содержит ли строка подстроку.
note = "Let's have a party on Thanksgiving!" contains_holiday = lambda note, holiday: holiday in note print("Thanksgiving plans are set!" if contains_holiday(note, "Thanksgiving") else "No plans yet for Thanksgiving.")
Вывод: лямбда-функция в Python проверяет наличие подстроки в строке. Это многоразовый вариант ин-оператора.
Thanksgiving plans are set!
Метод 8: с использованием нарезки
Нарезка в подходе Python аналогична методу понимания списка. Он проверяет все возможные фрагменты основной строки Python, длина которых равна длине подстроки. Если какой-либо из этих фрагментов соответствует подстроке, то подстрока присутствует.
Сценарий: поиск подстроки в строке с помощью метода срезов Python.
article = "Silicon Valley has many giants, including Apple, Google, and Facebook." apple_present = any(article[i:i+len("Apple")] == "Apple" for i in range(len(article))) print("Apple is mentioned in the article!" if apple_present else "Apple isn't mentioned.")
Вывод: этот набор кода использует технику нарезки в Python для проверки каждой подстроки длины строки, соответствует ли она подстроке.
Apple is mentioned in the article!
Метод 9: используя регулярное выражение
Регулярные выражения (регулярные выражения) в Python — это мощные инструменты для сопоставления текста. Используя функцию поиска из повторного модуля, можно искать наличие шаблона внутри основной строки.
Это особенно полезно, когда необходимо сопоставить более сложные шаблоны.
Пример: проверка наличия подстроки в строке в Python с помощью повторного модуля.
import re zip_code = "90210" if re.search(r"^\d{5}$", zip_code): print("Valid ZIP Code format!") else: print("Invalid ZIP Code format!")
Вывод: функция search() из модуля re в Python проверяет, содержит ли строка подстроку.
Valid ZIP Code format!
Заключение
Понимание того, как Python проверяет, содержит ли строка подстроку или нет, с помощью девяти различных методов, таких как If-else внутри оператора, метод Split(), метод find(), метод count(), метод index(), понимание списка, лямбда-функция, функция среза, и метод поиска регулярных выражений().