2010-09-13 24 views
11

¿Cómo puedo reemplazar los caracteres no ASCII de una cadena Unicode en Python?Reemplazar caracteres no ASCII de una cadena Unicode en Python

Estos son la salida me SPECT para las entradas dadas:

musica -> musica

cartón -> cartón

caño -> cano

Myaybe con un diccionario donde 'a 'es una clave y' un 'un valor?

+2

posible duplicado de [¿Cuál es la mejor manera de eliminar los acentos en una cadena Unicode de Python?] (Http://stackoverflow.com/questions/517923/what-is-the-best-way-to- remove-accents-in-a-python-unicode-string) – nosklo

Respuesta

21

Si todo lo que quiere hacer es degradar caracteres acentuados a su equivalente no con acento:

>>> import unicodedata 
>>> unicodedata.normalize('NFKD', u"m\u00fasica").encode('ascii', 'ignore') 
'musica' 
7

Ahora, sólo para complementar la respuesta: Puede ser el caso de que sus datos no viene en Unicode (es decir, está leyendo un archivo con otra codificación y no puede prefijar la cadena con una "u"). Aquí hay un fragmento que también puede funcionar (principalmente para quienes leen archivos en inglés).

import unicodedata 
unicodedata.normalize('NFKD',unicode(someString,"ISO-8859-1")).encode("ascii","ignore") 
Cuestiones relacionadas