Пропустить до содержимого

Как использовать Python для проверки наличия подстроки в строке?

[

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

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

raw_file_content = """Привет и добро пожаловать.
Это специальный скрытый файл с СЕКРЕТНЫМ секретом.
Я не хочу сказать вам о Секрете,
но я хочу тайно сказать вам, что у меня есть один."""
if "секрет" in raw_file_content:
print("Найдено!")

Результатом выполнения этого кода будет вывод сообщения “Найдено!”, поскольку подстрока “секрет” присутствует в переменной raw_file_content.

Если вы хотите проверить, что подстрока не содержится в строке, то можно использовать оператор not in:

if "секрет" not in raw_file_content:
print("Подстрока не найдена!")

Здесь результатом будет вывод сообщения “Подстрока не найдена!”, так как подстрока “секрет” присутствует в переменной raw_file_content.

Обратите внимание, что оператор in возвращает логическое значение:

  • True, если подстрока была найдена
  • False, если подстрока не была найдена

Такое интуитивное использование оператора членства можно объединить с условными операторами для принятия решений в программе:

if "секрет" in raw_file_content:
print("Подстрока найдена!")
else:
print("Подстрока не найдена!")

Обобщите проверку, исключив учет регистра

Наиболее распространенным требованием является проверка наличия подстроки без учета регистра символов. Для этого можно использовать метод lower(), который переводит все символы строки в нижний регистр. Затем можно проверить, содержится ли подстрока в преобразованной строке:

raw_file_content = """Привет и добро пожаловать.
Это специальный скрытый файл с СЕКРЕТНЫМ секретом.
Я не хочу сказать вам о Секрете,
но я хочу тайно сказать вам, что у меня есть один."""
substring = "Секрет"
if substring.lower() in raw_file_content.lower():
print("Подстрока найдена без учета регистра!")

В данном коде мы сначала преобразуем подстроку и строку raw_file_content в нижний регистр, а затем проверяем наличие подстроки в преобразованной строке. Если подстрока найдена без учета регистра, то будет выведено сообщение “Подстрока найдена без учета регистра!“.

Узнайте больше о подстроке

Python предлагает множество встроенных методов для работы со строками. Если вам нужно узнать больше о подстроке, вы можете использовать следующие методы:

  • str.count(substring): возвращает количество непересекающихся вхождений подстроки в строку
  • str.startswith(substring): проверяет, начинается ли строка с подстроки
  • str.endswith(substring): проверяет, заканчивается ли строка на подстроку
  • str.find(substring): возвращает индекс (позицию) первого вхождения подстроки в строку, или -1, если подстрока не найдена

Вот примеры:

string = "Python is awesome!"
substring = "is"
# Возвращает 1, т.к. "is" встречается один раз
count = string.count(substring)
# Возвращает True, т.к. строка начинается с "Python"
starts_with = string.startswith("Python")
# Возвращает False, т.к. строка не заканчивается на "is"
ends_with = string.endswith("is")
# Возвращает 7, т.к. индекс (позиция) первого вхождения "is" равен 7
index = string.find("is")

Запустите код выше и посмотрите, какими значениями будут переменные count, starts_with, ends_with и index.