Comment supprimer les accents d'une chaîne de caractères avec python 2

Open Science Notebook - Articles

Comment supprimer les accents d'une chaîne de caractères avec python 2

by Daidalos on October 29, 2014


Avec python il est possible de supprimer les accents d'un string 's'. Pour cela, il faut d'abord changer le string en unicode (avec s1 = unicode(s,'utf-8')) pour ensuite utiliser unicodedata, illustration:

>>> import unicodedata
>>> s = 'Découvrez tous les logiciels à télécharger'
>>> s
'D\xc3\xa9couvrez tous les logiciels \xc3\xa0 t\xc3\xa9l\xc3\xa9charger'
>>> s1 = unicode(s,'utf-8')
>>> s2 = unicodedata.normalize('NFD', s1).encode('ascii', 'ignore')     
>>> s2
'Decouvrez tous les logiciels a telecharger'

Remarque: il est important de connaître l'encodage de s avant de le transformer en unicode sinon les accents ne seront pas correctement supprimés. Par exemple si on a obtenu le string en lisant un fichier il est possible que celui-ci soit encodé en iso-8859-1 dans ce cas il faut faire:

>>> s1 = unicode(s,'iso-8859-1')

au lieu de

>>> s1 = unicode(s,'utf-8')

dans le code ci-dessous.

Recherches associées

Liens Site
unicodedata python doc
What is the best way to remove accents in a python unicode string? stackoverflow
Python detect string byte encoding stackoverflow
How do I check if a string is unicode or ascii? stackoverflow
you need to be logged in to post a comment