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.

Antworten:


213

find()

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

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


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

0
def find_pos(chaine,x):

    for i in range(len(chaine)):
        if chaine[i] ==x :
            return 'yes',i 
    return 'no'

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.