Wie finde ich das erste Vorkommen einer Unterzeichenfolge in einer Python-Zeichenfolge?

123

Also, wenn meine Zeichenfolge "der Typ ist ein cooler Typ" ist.
Ich würde gerne den ersten Index von 'Dude' finden:

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

Was ist der Python-Befehl dafür?
Vielen Dank.

foreyez
quelle

Antworten:

213

find()

>>> s = "the dude is a cool dude"
>>> s.find('dude')
4
mechanisches Fleisch
quelle
20
Es kehrt zurück, -1wenn es nicht gefunden wird
Christophe Roussy
Was ist, wenn ich das Wort isaus 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 ()?
Regressor
@ Regressor: Schauen Sie sich Regex und Wortgrenzen an.
mechanisches
27

Kurzübersicht: indexundfind

Neben der findMethode gibt es auch index. findund indexergeben beide das gleiche Ergebnis: die Position des ersten Auftretens wiederkehrende , aber wenn nichts gefunden wird , indexwird eine Erhöhung ValueErrorwährend findkehrt -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

Zusätzliches Wissen: rfindund rindex:

In der Regel findet und Index den kleinsten Index zurück , wo die übergebene String beginnt und rfindund rindexden größten Index zurück , wo es die meisten der Zeichenfolge beginnt Suchalgorithmen von Suche von links nach rechts , so mit den Startfunktionen rzeigen 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 rfindoder rindexschneller 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

user1767754
quelle
Wenn die Zeichenfolge definiert ist als input_string = "this is a sentence"und wenn wir das erste Vorkommen des Wortes finden möchten, isfunktioniert 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")
Regressor
1

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
sahasrara62
quelle
0
def find_pos(chaine,x):

    for i in range(len(chaine)):
        if chaine[i] ==x :
            return 'yes',i 
    return 'no'
Benmadani Yazid
quelle
6
Scheint, als ob Ihre Einrückung deaktiviert ist und Sie vergessen haben, Ihre Anführungszeichen zu schließen. Eine Erklärung Ihres Codes und warum er das Problem lösen würde, ist ebenfalls hilfreich. Siehe Antworten
camille
Entschuldigung, ich bearbeite es ... mein Code findet das erste Vorkommen eines Buchstabens in einer Zeichenfolge und gibt seinen Platz zurück
Benmadani Yazid