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.