et si je veux trouver le mot isde la phrase this is a cool dude? J'ai essayé la méthode find mais elle renvoie l'index 2 au lieu de 5. Comment puis-je y parvenir en utilisant find ()?
Regressor le
@Regressor: examinez les limites des expressions rationnelles et des mots.
mechanical_meat
28
Aperçu rapide: indexetfind
À côté de la findméthode, il y en a aussi index. findet les indexdeux donnent le même résultat: renvoyer la position de la première occurrence, mais si rien n'est trouvé indexlèvera un ValueErroralors findrenvoie -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: rfindet rindex:
En général, find et index renvoient le plus petit index où la chaîne transmise commence et rfindet rindexretournent le plus grand index où il commence La plupart des algorithmes de recherche de chaîne recherchent de gauche à droite , donc les fonctions commençant par rindiquent que la recherche se déroule de droite à gauche .
Donc, dans le cas où la probabilité de l'élément que vous recherchez est proche de la fin que du début de la liste, rfindou rindexserait 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
si la chaîne est définie comme input_string = "this is a sentence"et si nous souhaitons trouver la première occurrence du mot is, cela fonctionnera-t-il? # first occurence of word in a sentence input_string = "this is a sentence" # return the index of the word matching_word = "is" input_string.find("is")
Regressor le
1
pour implémenter cela de manière algorithmique, en n'utilisant aucune fonction intégrée python. Cela 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
Il semble que votre indentation est désactivée et que vous avez oublié de fermer vos guillemets. Une explication de votre code et pourquoi il résoudrait le problème est également utile; voir Comment répondre
camille le
désolé je l'édite ... mon code trouve la première occurrence d'une lettre dans une chaîne et renvoie sa place
Benmadani Yazid le
0
verse = "Si vous pouvez garder la tête quand tout à propos de vous \ n Perdez la leur et vous blâmez, \ nSi vous pouvez vous faire confiance lorsque tous les hommes doutent de vous, \ n Mais tenez également compte de leurs doutes; \ nSi vous le pouvez attendez et ne soyez pas fatigué d’attendre, \ n ou de vous faire mentir, de ne pas mentir, \ n d’être détesté, de ne pas céder à la haine, \ n Et pourtant, ne paraissez pas trop bien, ni ne parlez trop sage : "
enter code here
print(verse)#1. What is the length of the string variable verse?
verse_length = len(verse)print("The length of verse is: {}".format(verse_length))#2. What is the index of the first occurrence of the word 'and' in verse?
index = verse.find("and")print("The index of the word 'and' in verse is {}".format(index))
-1
si non trouvéis
de la phrasethis is a cool dude
? J'ai essayé la méthode find mais elle renvoie l'index 2 au lieu de 5. Comment puis-je y parvenir en utilisant find ()?Aperçu rapide:
index
etfind
À côté de la
find
méthode, il y en a aussiindex
.find
et lesindex
deux donnent le même résultat: renvoyer la position de la première occurrence, mais si rien n'est trouvéindex
lèvera unValueError
alorsfind
renvoie-1
. Speedwise, les deux ont les mêmes résultats de référence.Connaissances supplémentaires:
rfind
etrindex
:Donc, dans le cas où la probabilité de l'élément que vous recherchez est proche de la fin que du début de la liste,
rfind
ourindex
serait plus rapide.Source: Python: Guide de démarrage rapide visuel, Toby Donaldson
la source
input_string = "this is a sentence"
et si nous souhaitons trouver la première occurrence du motis
, cela fonctionnera-t-il?# first occurence of word in a sentence input_string = "this is a sentence" # return the index of the word matching_word = "is" input_string.find("is")
pour implémenter cela de manière algorithmique, en n'utilisant aucune fonction intégrée python. Cela peut être implémenté comme
la source
la source
verse = "Si vous pouvez garder la tête quand tout à propos de vous \ n Perdez la leur et vous blâmez, \ nSi vous pouvez vous faire confiance lorsque tous les hommes doutent de vous, \ n Mais tenez également compte de leurs doutes; \ nSi vous le pouvez attendez et ne soyez pas fatigué d’attendre, \ n ou de vous faire mentir, de ne pas mentir, \ n d’être détesté, de ne pas céder à la haine, \ n Et pourtant, ne paraissez pas trop bien, ni ne parlez trop sage : "
la source