Je veux trouver la position (ou index) de la dernière occurrence d'une certaine sous-chaîne dans une chaîne d'entrée donnée str
.
Par exemple, supposons que la chaîne d'entrée soit str = 'hello'
et que la sous-chaîne soit target = 'l'
, alors elle devrait sortir 3.
Comment puis-je faire ceci?
str
comme nom de variable. Un autre nom de variable que les gens devraient éviter en python estabc
; il y a un module appeléabc
dans l'API native.Vous pouvez utiliser des liens
rfind()
ou Python2:rindex()
rfind()
rindex()
La différence est lorsque la sous-chaîne n'est pas trouvée,
rfind()
retourne-1
alors querindex()
déclenche une exceptionValueError
(lien Python2:)ValueError
.Si vous ne voulez pas vérifier le
rfind()
code retour-1
, vous préférerez peut-êtrerindex()
que cela fournisse un message d'erreur compréhensible. Sinon, vous pouvez rechercher des minutes où la valeur inattendue-1
provient de votre code ...Exemple: recherche du dernier caractère de nouvelle ligne
la source
Utilisez la
str.rindex
méthode.la source
Essaye ça:
la source
La
more_itertools
bibliothèque propose des outils pour trouver des index de tous les caractères ou de toutes les sous-chaînes .Donné
Code
Personnages
Maintenant, l'
rlocate
outil est disponible:Un outil complémentaire est
locate
:Sous-chaînes
Un
window_size
paramètre est également disponible pour localiser l'élément principal de plusieurs éléments:la source
N'essayant pas de ressusciter un post inactif, mais comme cela n'a pas encore été posté ...
(Voici comment je l'ai fait avant de trouver cette question)
Explication: Lorsque vous recherchez la dernière occurrence, vous recherchez vraiment la première occurrence dans la chaîne inversée. Sachant cela, je l'ai fait
s[::-1]
(ce qui renvoie une chaîne inversée), puis j'ai indexé le àtarget
partir de là. Ensuite, je l'ai faitlen(s) - 1 - the index found
parce que nous voulons l'index dans la chaîne non inversée (c'est-à-dire d'origine).Attention cependant! S'il
target
y a plus d'un caractère, vous ne le trouverez probablement pas dans la chaîne inversée. Pour résoudre ce problème, utilisezlast_pos = len(s) - 1 - s[::-1].index(target[::-1])
, qui recherche une version inversée detarget
.la source
Si vous ne voulez pas utiliser rfind, cela fera l'affaire /
la source
vous pouvez utiliser la
rindex()
fonction pour obtenir la dernière occurrence d'un caractère dans la chaînela source
Python String rindex (), méthode
Description La
méthode de chaîne Python rindex () renvoie le dernier index où se trouve la chaîne de sous-chaîne, ou déclenche une exception si aucun index de ce type n'existe, restreignant éventuellement la recherche à la chaîne [beg: end].
Syntaxe
Voici la syntaxe de la méthode rindex () -
Paramètres
str - Ceci spécifie la chaîne à rechercher.
beg - Ceci est l'index de départ, par défaut son 0
len - C'est la fin de l'index, par défaut c'est égal à la longueur de la chaîne.
Valeur de retour
Cette méthode retourne le dernier index s'il est trouvé, sinon déclenche une exception si str n'est pas trouvé.
Exemple
L'exemple suivant montre l'utilisation de la méthode rindex ().
Démo en direct
! / usr / bin / python
Lorsque nous exécutons le programme ci-dessus, il produit le résultat suivant -
Ref: Méthode rindex () de chaîne Python - Tutorialspoint
la source