Warum geben rfind und find die gleichen Werte in Python 2.6.5 zurück?

7

Ich bin relativ neu in Python, und etwas macht etwas aus. Wenn ich str.rfind("test") für eine Zeichenfolge aufruft, entspricht die Ausgabe im Wesentlichen str.find("test") . Am besten zeige ich Ihnen ein Beispiel:

%Vor%

Nach meinem Verständnis ist der Wert von line.find in Ordnung, aber der Wert von line.rfind sollte 9 sein. Fehle ich diese Funktionen falsch oder benutze ich sie nicht gut?

    
Avneesh 13.07.2011, 06:38
quelle

3 Antworten

19

Ich denke, Sie erwarten rfind , um den Index des ganz rechts stehenden Zeichens in der ersten / ganz linken Übereinstimmung für "what" zurückzugeben. Es gibt tatsächlich den Index des ganz links stehenden Zeichens in der letzten / am weitesten rechts Übereinstimmung für "what "zurück. Um die Dokumentation :

  

str.rfind(sub[, start[, end]])

     

Gibt den höchsten Index in der Zeichenkette zurück, in dem die Teilzeichenfolge sub gefunden wird, so dass sub in s[start:end] enthalten ist. Die optionalen Argumente start und end werden als Slice-Notation interpretiert. Gibt -1 bei Fehler zurück.

"ab c ab".find("ab") wäre 0 , weil das am weitesten links liegende Vorkommen am linken Ende liegt.
"ab c ab".rfind("ab") wäre 5 , weil das am weitesten rechts liegende Vorkommen an diesem Index beginnt.

    
Jeremy Banks 13.07.2011, 06:42
quelle
2

Um besser zu verstehen, wofür .rfind gedacht ist, versuchen Sie Ihr Beispiel mit einer Zeichenfolge wie "Hallo, was los ist, hallo, was los ist" (das heißt, mehr als 1 Vorkommen von "was")

    
Steven 13.07.2011 14:21
quelle
1

find () gibt den Index der ersten Übereinstimmung zurück. Aber rfind gibt Ihnen das letzte Vorkommen des Musters. Es wird klar sein, wenn Sie versuchen, den Fall wiederholter Übereinstimmungen abzustimmen.

Überprüfen Sie dieses Beispiel %Vor%     
Christy Jaikumar 21.06.2016 10:49
quelle

Tags und Links