Antworten:
>>> s = "the dude is a cool dude"
>>> s.find('dude')
4
is
aus dem Satz finden möchte this is a cool dude
? Ich habe die find-Methode ausprobiert, aber sie gibt Index 2 statt 5 zurück. Wie erreiche ich dies mit find ()?
index
undfind
Neben der find
Methode gibt es auch index
. find
und index
ergeben beide das gleiche Ergebnis: die Position des ersten Auftretens wiederkehrende , aber wenn nichts gefunden wird , index
wird eine Erhöhung ValueError
während find
kehrt -1
. In Bezug auf die Geschwindigkeit haben beide die gleichen Benchmark-Ergebnisse.
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
und rindex
:In der Regel findet und Index den kleinsten Index zurück , wo die übergebene String beginnt und
rfind
undrindex
den größten Index zurück , wo es die meisten der Zeichenfolge beginnt Suchalgorithmen von Suche von links nach rechts , so mit den Startfunktionenr
zeigen an, dass die Suche von geschieht rechts nach links .
Für den Fall, dass die Wahrscheinlichkeit des Elements, das Sie suchen, nahe am Ende als am Anfang der Liste liegt rfind
oder rindex
schneller wäre.
s.rfind(t) #returns: Same as find, but searched right to left
s.rindex(t) #returns: Same as index, but searches right to left
Quelle: Python: Visual QuickStart Guide, Toby Donaldson
input_string = "this is a sentence"
und wenn wir das erste Vorkommen des Wortes finden möchten, is
funktioniert es dann? # 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")
um dies auf algorithmische Weise zu implementieren, indem keine in Python eingebaute Funktion verwendet wird. Dies kann implementiert werden als
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
def find_pos(chaine,x):
for i in range(len(chaine)):
if chaine[i] ==x :
return 'yes',i
return 'no'
-1
wenn es nicht gefunden wird