#1 Le 07/09/2019, à 06:55
- Compte supprimé
[Résolu] Python: Remplacer les caractères accentués d'une chaîne
Bonjour,
Je souhaite remplacer tous les accents d'une chaîne de caractère par des caractères équivalent sans accents.
J'ai pensé à un code du genre de celui présenté ci dessous...mais j'imagine qu'il y a d'autres façons de faire. Comment procéderiez vous?
Merci
### enlève accents chaine str ###
mot = 'éèçêẽàù mais pas que'
mot_sans_accents = []
for i in mot:
if i == 'é' or i == 'è' or i =='ê' or i == 'ẽ':
i = 'e'
if i == 'ç':
i = 'c'
if i == 'à' or i== 'â' or i == 'ã':
i = 'a'
mot_sans_accents.append(i)
mot_sans_accents = "".join(mot_sans_accents)
Dernière modification par Compte supprimé (Le 07/09/2019, à 08:03)
#2 Le 07/09/2019, à 07:26
- nany
Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne
Bonjour,
import unidecode
mot = 'éèçêẽàù mais pas que'
mot_sans_accents = unidecode.unidecode(mot)
print(mot_sans_accents)
En ligne
#3 Le 07/09/2019, à 07:29
- pingouinux
Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne
Bonjour,
Tu n'as pas dû essayer ton script, car il génère une erreur : il ne faut pas convertir la liste mot_sans_accents en chaîne à chaque itération.
Je te propose cette méthode, qui permet d'ajouter facilement d'autres caractères à convertir.
### enlève accents chaine str ###
mot = 'éèçêẽàù mais pas que'
tablo = { 'éèêẽ' : 'e'
, 'ç' : 'c'
, 'àâã' : 'a'
, 'ù' : 'u'
}
mot_sans_accents = ''
for i in mot:
for k in tablo:
if i in k: i = tablo[k]; break
mot_sans_accents += i
print(mot_sans_accents)
Hors ligne
#4 Le 07/09/2019, à 07:49
- Compte supprimé
Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne
Merci nany, pingouinux
Je connaissais pas le module unidecode, j'en prend note . Par contre, cela implique son installation ..
pingouinux: J'ai en effet mal recopié mon script .. Ta solution est plus compacte que la mienne, je prends
#5 Le 07/09/2019, à 07:50
- pingouinux
Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne
@nany #2 :
Où trouve-ton le module unidecode ? À moins qu'il ne s'agisse d'une faute de frappe ?
Hors ligne
#6 Le 07/09/2019, à 07:52
- Compte supprimé
Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne
ici ? ---> https://pypi.org/project/Unidecode/
#7 Le 07/09/2019, à 07:57
- nany
Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne
Dans le dépôt universe :
apt show python-unidecode python3-unidecode
En ligne
#8 Le 07/09/2019, à 07:58
- Compte supprimé
Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne
Installé
pip install unidecode
#9 Le 07/09/2019, à 08:08
- pingouinux
Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne
Merci. C'est effectivement plus simple avec unidecode, que je ne connaissais pas.
En python2, la chaîne doit être préfixée :
mot = u'éèçêẽàù mais pas que'
Hors ligne
#10 Le 07/09/2019, à 08:11
- nany
Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne
En python2, la chaîne doit être préfixée :
Merci de cette précision, je n’avais testé qu’avec python3 (la version 2 étant bientôt abandonnée).
En ligne