2010-09-13 6 views
11

Come posso sostituire caratteri non ascii da una stringa unicode in Python?Sostituisci caratteri non ascii da una stringa unicode in Python

Questo sono l'uscita I SPECT per gli ingressi indicati:

Musica -> musica

cartón -> cartone

caño -> cano

Myaybe con un dict dove 'á 'è una chiave e' un 'valore?

+2

possibile duplicato di [Qual è il modo migliore per rimuovere gli accenti in una stringa unicode Python?] (Http://stackoverflow.com/questions/517923/what-is-the-best-way-to- rimuovere-accenti-in-a-pitone-unicode-stringa) – nosklo

risposta

21

Se tutto quello che vogliamo fare è degradare caratteri accentati al loro equivalente non accentata:

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

Ora, giusto per completare la risposta: Può essere il caso che i dati non sono disponibili in unicode (cioè stai leggendo un file con un'altra codifica e non puoi prefisso la stringa con una "u"). Ecco uno snippet che potrebbe funzionare anche (soprattutto per chi legge i file in inglese).

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