Недавно я работал над проектом машинного обучения и обнаружил, что для него требуются некоторые элементы подстроки и проверка, доступны ли они в строке или нет. Итак, я провел небольшое исследование и обнаружил, что нам нужно проверить, содержит ли строка подстроку в Python.

Содержание

Методы

В 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!

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

Метод 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!

с использованием метода Split()

Способ 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!

с использованием метода find()

Способ 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!

с использованием метода count()

Метод 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.

используя index()

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

Добавить комментарий