Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: h0oke en 8 Noviembre 2009, 21:25 pm



Título: [?] Python - String Matching
Publicado por: h0oke en 8 Noviembre 2009, 21:25 pm
Qué métodos conocen en python para búsquedas de strings, se que existe "find e index" pero estos solo encuentran la primera ocurrencia. Quisiera saber si es que existen otros métodos.


Título: Re: [?] Python - String Matching
Publicado por: Novlucker en 9 Noviembre 2009, 02:43 am
Básicamente son esas, pero eso ocurre en casi todos los lenguajes, la función find te devuelve la primera coincidencia (también esta rfind), para obtener un array (lista) con las coincidencias debes de hacerlo de manera recursiva o con un loop .. buscas .. encuentras .. y vuelves a buscar tomando como inicio la coincidencia anterior, esto hasta que ya no encuentres nada  :P

Saludos


Título: Re: [?] Python - String Matching
Publicado por: h0oke en 9 Noviembre 2009, 12:30 pm
Gracias, no conocía esa función, y creo que me sirve para encontrar luego de ello la máxima coincidencia y la mínima.

Un saludo!


Título: Re: [?] Python - String Matching
Publicado por: h0oke en 9 Noviembre 2009, 15:16 pm
Hola Novlucker, una librería muy útil : "re module" "Regular Expression Operations".

Un saludo!


Título: Re: [?] Python - String Matching
Publicado por: Novlucker en 9 Noviembre 2009, 15:21 pm
Claro que si ... pero es que para algo tan sencillo como buscar una misma palabra en una cadena me es "demasiado" hacer uso del modulo re, diferente sería si necesitas buscar palabras cuya "estructura" sea "X", donde el valor de "X" no es constante, lo que tu búscas se soluciona con una función simple

Saludos


Título: Re: [?] Python - String Matching
Publicado por: h0oke en 9 Noviembre 2009, 15:31 pm
Mmm, te explico lo que necesito hacer, te doy un ejemplo:

Cadena1 = "HOLA PEREZ JUAN"
Cadena2 = "ADIOS HOL ADIOS ADIOS"

La función  debería devolver, (6,4). Es decir que necesecito encontrar la máxima coincidencia posible entre dos cadenas, pero siendo que en la cadena1 lo debo tener en cuenta desde el inicio, es decir desde la posición "0".

Tu como lo implementarías?

Lo que intento hacer es evadir la búsqueda por complejidad de n², que sería una búsqueda lineal, quiero tratar de hacerlo lo más eficiente posible.


Título: Re: [?] Python - String Matching
Publicado por: Novlucker en 9 Noviembre 2009, 15:56 pm
Pero es que así como lo tienes solo se me ocurre de manera líneal, además de que debes de comparar caracteres y no fragmentos de texto, dado que tu en la Cadena1 tienes un texto dado, pero comparas ese texto dado teniendo en cuenta espacios en medio .. lo que se me ocurre es con un loop ignorando espacios (pero seguro que esto también se te ha ocurrido), salvo que estes buscando un espacio

Saludos


Título: Re: [?] Python - String Matching
Publicado por: h0oke en 9 Noviembre 2009, 16:16 pm
Exacto, eso último es lo que se me había ocurrido. Entonces al parecer no hay otra manera, aunque alguna vez me recomendaron suffix trix, pero todavía no llego a interpretar cual era su fin dentro de esto. También me recomendaron utilizar diccionarios, en esto último me encuentro.

Gracias  ::)


Título: Re: [?] Python - String Matching
Publicado por: Novlucker en 9 Noviembre 2009, 17:21 pm
Justamente tiene que ver con la búsqueda de cadenas ...

Mirate aquí
:http://marknelson.us/1996/08/01/suffix-trees/

Saludos


Título: Re: [?] Python - String Matching
Publicado por: h0oke en 10 Noviembre 2009, 04:13 am
Gracias por la info Novlucker!  ::)