[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