web-dev-qa-db-fra.com

Comment trouver la première occurrence d'une sous-chaîne dans une chaîne python?

Donc, si ma chaîne est "le mec est un mec cool".
J'aimerais trouver le premier index de 'mec':

mystring.findfirstindex('dude') # should return 4

Quelle est la commande python pour cela?)
Merci.

100
foreyez

find()

>>> s = "the dude is a cool dude"
>>> s.find('dude')
4
175
bernie

Aperçu rapide: index et find

A côté de la méthode find, il y a aussi index. find et index donnent le même résultat: renvoyer la position de la première occurrence, but si rien n'est trouvé, index lève un ValueError alors que find renvoie -1. Speedwise, les deux ont les mêmes résultats de référence.

s.find(t)    #returns: -1, or index where t starts in s
s.index(t)   #returns: Same as find, but raises ValueError if t is not in s

Connaissances supplémentaires: rfind et rindex:

En général, find et index renvoient le plus petit index à partir duquel commence la chaîne transmise, et rfind et rindex renvoient le plus grand index à partir de lequel la plupart des algorithmes de recherche de chaîne sont utilisés de gauche à droite, donc les fonctions commençant par r indiquent que la recherche a lieu de de droite à gauche.

Ainsi, dans le cas où la probabilité que l’élément recherché soit proche de la fin au début de la liste, rfind ou rindex serait plus rapide.

s.rfind(t)   #returns: Same as find, but searched right to left
s.rindex(t)  #returns: Same as index, but searches right to left

Source: Python: Guide de démarrage rapide visuel, Toby Donaldson

20
user1767754

pour implémenter cela de manière algorithmique, en n'utilisant aucune fonction intégrée python. Ceci peut être implémenté comme

def find_pos(string,Word):

    for i in range(len(string) - len(Word)+1):
        if string[i:i+len(Word)] == Word:
            return i
    return 'Not Found'

string = "the dude is a cool dude"
Word = 'dude1'
print(find_pos(string,Word))
# output 4
1
prashant rana