que==Qué
Gabriel Genellina
gagsl-py2 en yahoo.com.ar
Lun Abr 23 18:34:03 CEST 2007
En Mon, 23 Apr 2007 12:54:51 -0300, joana salgado gomez
<joana_mendaro en hotmail.com> escribió:
> Como puedo hacer que lo siguiente me de true en pyhton???
>
> que==Qué
py> import unicodedata
py> x = u"que"
py> y = u"Qué"
py> unicodedata.normalize("NFKD", x)
u'que'
py> unicodedata.normalize("NFKD", y)
u'Que\u0301'
py> unicodedata.normalize("NFKD", y).encode("ascii","ignore")
'Que'
py> unicodedata.normalize("NFKD",
u"áéíóú¿?ñçhólá").encode("ascii","ignore")
'aeiou?nchola'
py>
py> def soloascii(uni):
... assert isinstance(uni, unicode)
... return unicodedata.normalize("NFKD", uni).encode("ascii","ignore")
...
py> soloascii(x)
'que'
py> soloascii(y)
'Que'
py> soloascii(x).upper()==soloascii(y).upper()
True
Al normalizar con NFKD todos los caracteres compuestos se descomponen en
sus partes, por ejemplo, é = LATIN SMALL LETTER E + COMBINING ACUTE
ACCENT. Al usar encode("ascii") + "ignore", sólo nos vamos a quedar con
los caracteres que caen dentro del rango ASCII; es decir, ü -> u, ñ -> n,
etc.
Lo único que nos falta es llevar todo a mayúsculas o minúsculas;
combinando soloascii+upper podés armarte la funcion que estabas buscando.
--
Gabriel Genellina
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es