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