2010-09-13 13 views
11

Comment remplacer les caractères non-ascii d'une chaîne unicode en Python?Remplacer les caractères non-ascii d'une chaîne unicode en Python

Ce sont la sortie I SPECT pour les entrées données:

música -> musica

cartón -> carton

Caño -> cano

Myaybe avec un dict où « a 'est une clé et' a 'une valeur?

+2

double possible de [Quelle est la meilleure façon d'enlever les accents dans une chaîne de caractères Unicode python?] (Http://stackoverflow.com/questions/517923/what-is-the-best-way-to- remove-accents-in-a-python-unicode-string) – nosklo

Répondre

21

Si tout ce que vous voulez faire est de dégrader les caractères accentués à leur équivalent non-accentué:

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

Maintenant, pour compléter cette réponse: Il peut être le cas que vos données ne vient pas en unicode (ie vous lisez un fichier avec un autre encodage et vous ne pouvez pas préfixer la chaîne avec un "u"). Voici un extrait qui peut aussi fonctionner (surtout pour ceux qui lisent des fichiers en anglais).

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