[pyar] Las búsquedas son un quilombo... el regreso

Claudio Freire klaussfreire en gmail.com
Jue Dic 15 13:16:53 ART 2011


2011/12/15 Facundo Batista <facundobatista en gmail.com>:
> Ideas de algo que funcione y sea elegante?

Creo que necesitás matchear las cadenas normalizadas para poder
traducir los índices.
Algo que está muy sofisticado en análisis de ADN.

En tu caso, sin embargo, no haría falta tanta sofisticación, sólo
necesitás detectar omisiones:

>>> from unicodedata import normalize
>>> texto_original = u'Escuela N\xba 16 \u201cEsteban Echeverr\xeda\u201d del R\xedo La Barquita'
>>> print texto_original
Escuela Nº 16 “Esteban Echeverría” del Río La Barquita
>>> texto_normalizado = normalizar(texto_original)
>>> i = j = 0
>>> indices = []
>>> while i < len(texto_normalizado) and j < len(texto_original):
...    if texto_normalizado[i] == normalizar(texto_original[j]):
...       indices.append(j)
...       i += 1
...    j += 1
...
>>> busqueda = "ban"
>>> pos = texto_normalizado.find(busqueda)
>>> texto_original[indices[pos]:indices[pos+len(busqueda)]]
u'ban'
>>> busqueda = "rio"
>>> pos = texto_normalizado.find(busqueda)
>>> texto_original[indices[pos]:indices[pos+len(busqueda)]]
u'R\xedo'
>>> print indices
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53]
>>>



More information about the pyar mailing list