[Python-es] Problemas con expresión regular

Rolando Espinoza La Fuente darkrho en gmail.com
Lun Mayo 17 16:20:53 CEST 2010


2010/5/16 Andreina Mejia <andreinamejia en gmail.com>:
>
> Gracias por responder Rolando... pero no entiendo por qué a mi no me
> funciona. Estoy tratando de adaptar este corrector ortográfico:
> http://www.norvig.com/spell-correct.html al español, pensé que bastaría con
> sólo modificar la expresión regular he incluir en la búsqueda las vocales
> acentuadas y la 'ñ' pero no me resulta y necesito reusar ese componente para
> una aplicación que estoy desarrollando... de resto está perfecto.

Ten cuidado con el encoding

In [1]: import re

In [2]: print re.findall('\w+', 'aéoñ', re.UNICODE)
['a\xc3', 'o\xc3']             # no es lo que buscamos

In [3]: print re.findall('\w+', 'aéoñ'.decode('utf-8'), re.UNICODE)
[u'a\xe9o\xf1']               # esto es lo que buscamos

In [4]: print u'a\xe9o\xf1'
aéoñ

verás que ñ lo muestra en unicode como u"\xf1", pero

In [5]: u'\xf1' == 'ñ'
Out[5]: False

In [6]: u'\xf1' == 'ñ'.decode('utf-8')
Out[6]: True

Ten cuidado en que todas las cadenas que trabajes sean en el mismo encoding.
Y veo que ese cambio no será suficiente para el corrector, por que no toma en
cuenta la corrección para acentos, e.g. accion -> acción

~Rolando



Más información sobre la lista de distribución Python-es