Maison >développement back-end >Tutoriel Python >Comment trouver la Nième occurrence d'une chaîne en Python ?

Comment trouver la Nième occurrence d'une chaîne en Python ?

DDD
DDDoriginal
2024-10-20 07:30:29715parcourir

How to Find the Nth Occurrence of a String in Python?

Trouver la nième occurrence d'une chaîne en Python

Identifier l'index de la nième occurrence d'une sous-chaîne dans une chaîne est une tâche courante en programmation. Cependant, la méthode find intégrée de Python ne fournit pas de moyen simple de spécifier le numéro d'occurrence.

Solution :

Au lieu de s'appuyer directement sur la méthode find, voici une solution Pythonique qui localise de manière itérative la sous-chaîne et incrémente le nombre d'occurrences jusqu'à ce qu'elle atteigne la valeur souhaitée :

<code class="python">def find_nth(haystack: str, needle: str, n: int) -> int:
    """Find the index of the nth occurrence of needle in haystack."""
    start = haystack.find(needle)
    while start >= 0 and n > 1:
        start = haystack.find(needle, start+len(needle))
        n -= 1
    return start</code>

Utilisation :

Pour trouver l'index du deuxième occurrence de la sous-chaîne "foofoo" dans la chaîne "foofoofoofoo", vous appelleriez :

<code class="python">find_nth("foofoofoofoo", "foofoo", 2)</code>

Cela renverrait l'index 6, correspondant à la position de départ de la deuxième sous-chaîne "foofoo".

Considérations relatives aux occurrences qui se chevauchent :

Si vous avez besoin de trouver l'index de la nième occurrence qui se chevauche de la sous-chaîne, vous pouvez modifier la fonction find_nth pour incrémenter la position de départ. par 1 au lieu de la longueur de l'aiguille :

<code class="python">def find_nth_overlapping(haystack, needle, n):
    """Find the index of the nth overlapping occurrence of needle in haystack."""
    start = haystack.find(needle)
    while start >= 0 and n > 1:
        start = haystack.find(needle, start+1)
        n -= 1
    return start</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn