Bonjour, c’est encore moi.
Je cherche à supprimer tous les caractères spéciaux d’une chaîne de caractère. En cherchant dans la doc j’ai construit une méthode clean.py:
Dans le_nom il y a ce que j’entre dans le widget “éÉàÀ” par exemple
L’erreur complète est celà:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1540, in __call__
return self.func(*args)
File "PyRecord.py", line 87, in validNom
clean.clean_string(le_nom)
File "/home/PyRecord/clean.py", line 6, in clean_string
s = unicode(s, "utf8", "replace")
TypeError: decoding Unicode is not supported
La variable le_nom est déjà encodée en unicode, du coup, il ne peut pas le convertir.
En fait, la fonction unicode () sort déjà une variable unicode, du coup, il n’en prend pas en entrée.
Je te conseille un truc du genre :
def clean_string(s):
try:
s = unicode(s, "utf8", "replace")
except TypeError:
pass
s = unicodedata.normalize('NFD', s)
return s.encode('ascii', 'ignore')
Effectivement l’erreur n’est plus là mais les accents ne sont pas supprimés ma fonction clean_string(s) ne marche plus… Même lorsque j’essaie directement, pourtant il me semblait l’avoir vu fonctionner??
Ah moi ça marche maintenant!!
Je sais plus ce que j’ai changé mais le code que tu as mis juste à l’instant marche très bien chez moi
Ça me sort bien:
eEaA
Mais l’autre ne l’est toujours pas… Bon pour l’instant ce n’est pas grave je n’ai qu’une vingtaine de commande à écrire à la main, mais je sais que j’ai une fonction où il me faudra écrire 150 commandes selon …