2009-03-23 8 views
54

Sto cercando di trovare alcuni esempi ma senza fortuna. Qualcuno sa di alcuni esempi in rete? Mi piacerebbe sapere cosa restituisce quando non riesce a trovare e come specificare dall'inizio alla fine, che suppongo sarà 0, -1.Esempi per la ricerca di stringhe in Python

+0

Stai chiedendo informazioni su http://docs.python.org/library/stdtypes.html#id4?Stai chiedendo del metodo di ricerca, in particolare? http://docs.python.org/library/stdtypes.html#str.find –

+0

Grazie, sì, solo il metodo find. Ho trovato quella pagina ma nessun esempio. –

+0

Dice -1 sulla pagina. Cos'altro hai bisogno di sapere? –

risposta

39

è possibile utilizzare str.index troppo:

>>> '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

Perché dovresti sceglierne uno rispetto all'altro? – endolith

+1

alza l'errore invece di restituire un codice, che è più pitonico, secondo me. Le eccezioni – SilentGhost

+7

non devono essere utilizzate per il controllo del flusso. quindi, usa solo index() se nessuna corrispondenza sarebbe anormale. – aehlke

102

Non sono sicuro di cosa stai cercando, intendi find()?

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

Grazie, cosa ottieni se non riesce a trovarlo? –

+3

-1 dice la mia shell python – SilentGhost

+0

Ottieni -1, aggiornato con collegamento a documenti ed esempio. –

2

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

ritorno il più basso indice nella stringa dove si trova sotto stringa sub, così che sub venga contenuta nell'intervallo [start, end ]. Gli argomenti opzionali start e end sono interpretati come nella notazione slice. Restituisce -1 se sub non viene trovato.

Da the docs.

15

Onestamente, questo è il tipo di situazione in cui ho appena apro Python sulla riga di comando e inizio a fare in giro: interprete

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

di Python rende questo tipo di sperimentazione facile. (Lo stesso vale per le altre lingue con un interprete simile)

+0

IPython rende questo genere di cose ancora migliori. – endolith

28

Da here:

str.find (sub [, start [, end]])
ritorno il più basso indice nella stringa dove si trova sotto stringa sub , tale che sub è contenuto nell'intervallo [inizio, fine]. Gli argomenti opzionali start e end sono interpretati come nella notazione slice. Restituisce -1 se non viene trovata sotto "

Così, alcuni esempi:.

>>> 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

Generalmente non è una buona idea usare parole come 'str' come nomi di variabili .. –

5

Se si desidera effettuare la ricerca per l'ultima istanza di una stringa in un testo, è possibile eseguire rfind

.

Esempio:

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

uscita: 3

* non import necessaria

012.

sintassi completa:

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

Prova questo:

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

se x è una stringa e si cerca y che ha anche una stringa la loro è due casi: Caso 1: y è presente in x così x.find (y) = l'indice (la posizione) di y in x. caso 2: y non esiste, x.find (y) = -1 questo non è stato trovato in x.

Problemi correlati