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.
>>> s = "the dude is a cool dude"
>>> s.find('dude')
4
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
rfind
et rindex
:En général, find et index renvoient le plus petit index à partir duquel commence la chaîne transmise, et
rfind
etrindex
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 parr
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
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