Supprimer les accents d'un string en python

Open Science Notebook - Articles

Supprimer les accents d'un string en python

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