Недавно я работал над проектом машинного обучения и обнаружил, что для него требуются некоторые элементы подстроки и проверка, доступны ли они в строке или нет. Итак, я провел небольшое исследование и обнаружил, что нам нужно проверить, содержит ли строка подстроку в 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(), понимание списка, лямбда-функция, функция среза, и метод поиска регулярных выражений().