Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
07 Июл 2023
2 мин
4332

Поиск всех вхождений подстроки в строке в Python

В Python есть несколько способов поиска подстроки в строке. Например, можно использовать методы find() и rfind(), которые возвращают индекс первого вхождения

В Python есть несколько способов поиска подстроки в строке. Например, можно использовать методы find() и rfind(), которые возвращают индекс первого вхождения подстроки и индекс последнего вхождения подстроки соответственно.

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

Пример

s = "Привет, мир! Мир - прекрасен"
print(s.find('мир'))  # 8
print(s.rfind('мир')) # 13

Однако, эти методы не предоставляют информации обо всех вхождениях подстроки в строку. Например, если необходимо найти все вхождения слова «мир» в предложении «Привет, мир! Мир — прекрасен», то find() и rfind() не смогут с этим справиться.

В этом случае можно использовать регулярные выражения или цикл для прохождения по строке и поиска всех вхождений подстроки.

Использование регулярных выражений

Модуль re в Python предоставляет функцию finditer(), которая возвращает итератор, содержащий все вхождения подстроки в строке.

Пример

import re

s = "Привет, мир! Мир - прекрасен"
matches = re.finditer('мир', s)
indices = [match.start() for match in matches]

print(indices)  # [8, 13]

Использование цикла

Можно использовать цикл и метод find() для поиска всех вхождений подстроки в строке.

Пример

s = "Привет, мир! Мир - прекрасен"
substring = 'мир'
indices = []
index = -1  # начинаем поиск с начала строки

while True:
    # находим следующее вхождение подстроки
    index = s.find(substring, index + 1)

    # если вхождение не найдено, выходим из цикла
    if index == -1:
        break

    # добавляем индекс в список
    indices.append(index)

print(indices)  # [8, 13]

Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Программа рассчитана на новичков без опыта программирования и технического образования. Курс проходит в формате записанных коротких видеолекций. Будет много проверочных заданий и мастер-классов. В конце каждой недели — живая встреча с экспертами в разработке для ответов на вопросы и разбора домашек.

Таким образом, с помощью регулярных выражений или цикла можно найти все вхождения подстроки в строке.

Тест на профориентацию
За 10 минут узнайте, как ваш опыт пригодиться в IT индустрии
Подробнее
Тест на профориентацию

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