«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как найти n-е вхождение подстроки в строку в Python?

Как найти n-е вхождение подстроки в строку в Python?

Опубликовано 6 ноября 2024 г.
Просматривать:515

How to Find the nth Occurrence of a Substring in a String in Python?

Нахождение n-го вхождения подстроки в строке

Определение индекса, соответствующего n-му вхождению подстроки, задача, которая часто возникает в различных сценариях программирования. В Python нет встроенной функции, специально предназначенной для этой цели. Однако существует несколько подходов, которые можно использовать для достижения этого результата.

Один простой подход — использовать цикл для перебора строки и подсчета вхождений подстроки. Начальный индекс инициализируется результатом первого вхождения, и цикл продолжается до тех пор, пока не будет найдено n-е вхождение.

def find_nth_occurrence(haystack, needle, n):
    index = haystack.find(needle)
    while index >= 0 and n > 1:
        index = haystack.find(needle, index   len(needle))
        n -= 1
    return index

Этот метод эффективен и прост для понимания, но он требует нескольких проходов по строке, что может занять много времени для больших строк.

Другой более питонический подход — использовать обычные выражения. Регулярные выражения предоставляют мощный и лаконичный способ поиска и управления строками. Следующая функция использует метод re.findall() для поиска всех вхождений подстроки, а затем извлекает n-й индекс:

import re

def find_nth_occurrence_regex(haystack, needle, n):
    occurrences = re.findall(needle, haystack)
    if len(occurrences) >= n:
        return haystack.index(occurrences[n - 1])
    else:
        return -1

Этот метод быстрее, чем итеративный подход для больших строк, но требует импорта дополнительного модуля (re). Кроме того, для некоторых пользователей он может быть менее читаемым, чем итеративный подход.

Выбор между итеративным подходом и подходом с использованием регулярных выражений в конечном итоге зависит от конкретных требований поставленной задачи. Для небольших строк итеративного подхода может быть достаточно, а для больших строк подход с использованием регулярных выражений может обеспечить лучшую производительность.

Заявление о выпуске Эта статья перепечатана по адресу: 1729380497. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3