2009-03-23 15 views
54

Estoy tratando de encontrar algunos ejemplos, pero no tuve suerte. ¿Alguien sabe de algunos ejemplos en la red? Me gustaría saber qué devuelve cuando no puede encontrar, y cómo especificarlo de principio a fin, lo que supongo va a ser 0, -1.Ejemplos de búsqueda de cadenas en Python

+0

¿Pregunta sobre http://docs.python.org/library/stdtypes.html#id4?¿Estás preguntando sobre el método de búsqueda, específicamente? http://docs.python.org/library/stdtypes.html#str.find –

+0

Gracias, sí, solo el método de búsqueda. Encontré esa página pero no hay ejemplos. –

+0

Dice -1 en la página. ¿Qué más necesitas saber? –

Respuesta

39

puede utilizar str.index también:

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

¿Por qué elegirías una sobre la otra? – endolith

+1

plantea el error en lugar de devolver un código, que es más pitónico, en mi opinión. – SilentGhost

+7

las excepciones no se deben usar para el control de flujo. por lo tanto, solo use index() si ninguna coincidencia sería anormal. – aehlke

102

No estoy seguro de lo que está buscando, ¿quiere decir find()?

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

Gracias, ¿qué obtienes, si no puede encontrarlo? –

+3

-1 dice mi shell python – SilentGhost

+0

Obtiene -1, actualizado con un enlace a documentos y ejemplos. –

2

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

Volver al índice más bajo de la cadena en la que se encuentra sub subcadena, de tal manera que sub está contenido en el rango [start, end ] Los argumentos opcionales inicio y fin se interpretan como en notación por sectores. Devuelve -1 si no se encuentra sub.

De the docs.

15

Honestamente, este es el tipo de situación en la que acaba de abrir Python en la línea de comandos y empezar a jugar un poco: intérprete

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

de Python hace que este tipo de experimentación fácil. (Lo mismo sucede con otros idiomas con un intérprete similar)

+0

IPython hace que este tipo de cosas sea aún mejor. – endolith

28

De here:

str.find (sub [, Inicio [, end]])
Volver al índice más bajo de la cadena en la que se encuentra sub subcadena , tal que el sub está contenido en el rango [inicio, fin]. Los argumentos opcionales inicio y fin se interpretan como en notación por sectores. Devuelve -1 si no se encuentra sub "

Así, algunos ejemplos:.

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

En general, no es una buena idea usar palabras como 'str' como nombres de variables. –

5

Si desea buscar la última instancia de un texto en un texto, puede ejecutar rfind

.

Ejemplo:

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

salida: 3

* no importación necesario

sintaxis completa:

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

Prueba esto:

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

si x es una cadena y se busca y que también una cadena de su es dos casos: de caso 1: y existe en x así que x.find (y) = el índice (la posición) de y en x. case 2: y no existe así que x.find (y) = -1 esta media y no se encuentra en x.

Cuestiones relacionadas