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 |