2009-03-23 21 views
54

Próbuję znaleźć przykłady, ale bez powodzenia. Czy ktoś wie o niektórych przykładach w sieci? Chciałbym wiedzieć, co powraca, gdy nie może znaleźć, i jak określić od początku do końca, które, jak sądzę, będzie wynosić 0, -1.Przykłady znalezienia ciągu znaków w języku Python

+0

Pytasz o http://docs.python.org/library/stdtypes.html#id4?Pytasz konkretnie o metodę wyszukiwania? http://docs.python.org/library/stdtypes.html#str.find –

+0

Dzięki tak po prostu metoda wyszukiwania. Znalazłem tę stronę, ale bez przykładów. –

+0

Na stronie jest napisane -1. Co jeszcze musiałeś wiedzieć? –

Odpowiedz

39

można użyć str.index też:

>>> 'sdfasdf'.index('cc') 
Traceback (most recent call last): 
    File "<pyshell#144>", line 1, in <module> 
    'sdfasdf'.index('cc') 
ValueError: substring not found 
>>> 'sdfasdf'.index('df') 
1 
+4

Dlaczego wybrałbyś jedno nad drugim? – endolith

+1

to podnosi błąd zamiast zwracać kod, który jest bardziej pythonic, w mojej opinii. – SilentGhost

+7

wyjątki nie powinny być używane do kontroli przepływu. więc używaj indeksu() tylko wtedy, gdy żadne dopasowanie nie będzie nieprawidłowe. – aehlke

102

Nie jestem pewien, czego szukasz, masz na myśli find()?

>>> x = "Hello World" 
>>> x.find('World') 
6 
>>> x.find('Aloha'); 
-1 
+1

Dzięki, co otrzymasz, jeśli nie możesz tego znaleźć? –

+3

-1 mówi moja powłoka pytona – SilentGhost

+0

Otrzymasz -1, zaktualizowany linkiem do dokumentów i przykładu. –

2

find( sub[, start[, end]])

Powrót najniższy wskaźnik w ciągu gdzie podciąg sub znajduje się, tak że sub jest zawarta w przedziale [początek, koniec ]. Opcjonalne argumenty start i end są interpretowane tak jak w notacji plasterka. Zwraca -1, jeśli pod nie znaleziono.

Od the docs.

15

Szczerze mówiąc, jest to rodzaj sytuacji, w której po prostu otworzyć Pythona w wierszu poleceń i zacząć bawić: interpreter

>>> x = "Dana Larose is playing with find()" 
>>> x.find("Dana") 
0 
>>> x.find("ana") 
1 
>>> x.find("La") 
5 
>>> x.find("La", 6) 
-1 

Pythona czyni tego rodzaju eksperymentów łatwe. (To samo dotyczy innych języków z podobnym tłumacza)

+0

IPython sprawia, że ​​tego typu rzeczy są jeszcze lepsze. – endolith

28

Od here:

str.find (sub [, start [, end]])
Powrót najniższy wskaźnik w ciągu gdzie znajduje podciąg sub , tak że sub jest zawarty w zakresie [początek, koniec]. Opcjonalne argumenty start i end są interpretowane tak jak w notacji plasterka. Zwracają -1 jeśli sub nie znaleziono „

Tak, kilka przykładów:.

>>> str = "abcdefioshgoihgs sijsiojs " 
>>> str.find('a') 
0 
>>> str.find('g') 
10 
>>> str.find('s',11) 
15 
>>> str.find('s',15) 
15 
>>> str.find('s',16) 
17 
>>> str.find('s',11,14) 
-1 
+18

Generalnie nie jest dobrym pomysłem użycie słów takich jak 'str' jako nazw zmiennych. –

5

Jeśli chcesz szukać w ostatniej instancji ciągu w tekście, można uruchomić rfind

.

przykład:

s="Hello" 
    print s.rfind('l') 

Wydajność: 3

* brak importu potrzebne

pełną składnię:

stringEx.rfind(substr, beg=0, end=len(stringEx)) 
0

Spróbuj tego:

with open(file_dmp_path, 'rb') as file: 
fsize = bsize = os.path.getsize(file_dmp_path) 
word_len = len(SEARCH_WORD) 
while True: 
    p = file.read(bsize).find(SEARCH_WORD) 
    if p > -1: 
     pos_dec = file.tell() - (bsize - p) 
     file.seek(pos_dec + word_len) 
     bsize = fsize - file.tell() 
    if file.tell() < fsize: 
     seek = file.tell() - word_len + 1 
     file.seek(seek) 
    else: 
     break 
0

jeśli x jest ciągiem i szukać Y, który również ciągiem ich jest dwóch przypadkach: Przypadek 1: y istnieje w x, więc x.find (y) = indeks (pozycja) y wx. sprawa 2: y nie istnieje, więc x.find (y) = -1 oznacza, że ​​y nie występuje wx.

Powiązane problemy