"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como encontrar a enésima ocorrência de uma substring em uma string em Python?

Como encontrar a enésima ocorrência de uma substring em uma string em Python?

Publicado em 2024-11-06
Navegar:927

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

Encontrando a enésima ocorrência de uma substring em uma string

Identificar o índice correspondente à n-ésima ocorrência de uma substring é uma tarefa que frequentemente surge em vários cenários de programação. Em Python, não existe uma função integrada projetada especificamente para essa finalidade. No entanto, existem várias abordagens que podem ser empregadas para alcançar esse resultado.

Uma abordagem direta é usar um loop para iterar pela string e contar as ocorrências da substring. O índice inicial é inicializado com o resultado da primeira ocorrência e o loop continua até que a enésima ocorrência seja encontrada.

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

Este método é eficiente e fácil de entender, mas requer várias passagens pela string, o que pode ser demorado para strings grandes.

Outra abordagem mais Pythonica é usar regular expressões. Expressões regulares fornecem uma maneira poderosa e concisa de pesquisar e manipular strings. A função a seguir usa o método re.findall() para encontrar todas as ocorrências da substring e, em seguida, recupera o n-ésimo índice:

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

Este método é mais rápido que a abordagem iterativa para strings grandes, mas requer a importação de um módulo adicional (re). Além disso, pode ser menos legível do que a abordagem iterativa para alguns usuários.

A escolha entre as abordagens iterativa e de expressão regular depende, em última análise, dos requisitos específicos da tarefa em questão. Para strings pequenas, a abordagem iterativa pode ser suficiente, enquanto para strings grandes, a abordagem de expressão regular pode oferecer melhor desempenho.

Declaração de lançamento Este artigo é reproduzido em: 1729380497 Se houver alguma violação, entre em contato com [email protected] para excluí -lo.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3