Изучение различных методов поиска индексов начала подстроки в Python

В этой статье блога мы рассмотрим различные методы поиска всех вхождений начальных индексов подстрок внутри строки в Python. Мы изучим различные методы кодирования и по ходу дела предоставим простые для понимания примеры. Итак, приступим и разгадаем секреты поиска подстрок!

Метод 1: использование цикла и функции find().
Один из простых подходов — перебрать строку с помощью цикла и использовать встроенную функцию find()для определения начальных индексов. из подстрок. Вот пример:

def find_substring_indices(string, substring):
    indices = []
    length = len(substring)
    index = string.find(substring)

    while index != -1:
        indices.append(index)
        index = string.find(substring, index + length)

    return indices
# Example usage
text = "Hello, hello, hello!"
substring = "hello"
indices = find_substring_indices(text, substring)
print(indices)  # Output: [0, 7, 14]

Метод 2: использование модуля регулярных выражений (re)
Модуль reпредоставляет мощные инструменты для сопоставления шаблонов в строках. Мы можем использовать функцию finditer()для извлечения всех вхождений нужных индексов начала подстроки. Вот пример:

import re
def find_substring_indices(string, substring):
    pattern = re.compile(f'(?={substring})')
    indices = [match.start() for match in pattern.finditer(string)]
    return indices
# Example usage
text = "I scream, you scream, we all scream for ice cream!"
substring = "scream"
indices = find_substring_indices(text, substring)
print(indices)  # Output: [2, 10, 23]

Метод 3: использование List Comprehension и enumerate()
List Comprehension в сочетании с функцией enumerate()обеспечивает краткий способ поиска начальных индексов подстроки. Вот пример:

def find_substring_indices(string, substring):
    indices = [i for i, _ in enumerate(string) if string.startswith(substring, i)]
    return indices
# Example usage
text = "Python is powerful, Python is versatile, Python is fun!"
substring = "Python"
indices = find_substring_indices(text, substring)
print(indices)  # Output: [0, 17, 39]

В этой статье мы рассмотрели три различных метода поиска всех вхождений начальных индексов подстроки в строке с использованием Python. Мы рассмотрели такие методы, как функция find(), регулярные выражения, понимание списков и функция enumerate(). К настоящему моменту вы должны иметь четкое представление о том, как подойти к этой задаче, и выбрать метод, который лучше всего соответствует вашим потребностям. Приятного кодирования!