IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

'ascii' codec can't decode byte


Sujet :

Python

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 259
    Points : 195
    Points
    195
    Par défaut 'ascii' codec can't decode byte
    Bonjour à tous!
    Je sais, c'est un sujet qui a été souvent traité, qui énèrve beaucoup de monde, je suis désolé
    J'essaye de comparer un texte rentré par l'utilisateur (sans un textctrl avec wxpython) à une liste préremplie grâce à une base de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte.lower().startswith(liste.lower())
    Et python me renvoit l'erreur "'ascii' codec can't decode byte".
    J'ai tout essayé d'après ce que j'ai pu lire ici ou là : unicode, decode, encode... rien n'y fait. J'ai toujours un message d'erreur plus ou moins semblable.
    Je ne sais plus du tout quoi faire. J'ai même essayé d'enlever tous les accents des chaînes de caractères, mais dans la fonction que j'avais créée, ça ne passe pas non plus pour le même message d'erreur.
    AU SECOURS!!!!!!!!!!!!!!
    La vie n'est qu'une succession d'éternels recommencements

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    A priori cette erreur est due au fait que la chaine fourni par l'utilisateur est en utf-8, python s'attend à recevoir une chaine en ascii.

    Essaye peut-être quelquechose de ce genre :

    texte.lower().startswith(str(liste.lower()))

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 259
    Points : 195
    Points
    195
    Par défaut
    Merci pour la réponse... mais j'ai le même message d'erreur
    Que je mette str(liste).lower(), ou str(liste.lower()), j'ai tout pareil.
    La vie n'est qu'une succession d'éternels recommencements

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    est-ce que ton erreur ressemble à ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 0: ordinal not in range(128)
    Si oui, c'est au niveau de quel module?

  5. #5
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    dans ce genre d'erreur, il est bon de tout décomposer et de tout analyser:
    faire un print de chaque variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    print texte
    print texte.lower()
    print liste 
    print liste.lower()
    ...
    de vérifier aussi chaque type de tes variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print type(texte)
    print type(liste)
    et ensuite si tu as des chaînes unicode, il faut d'abord parfois les transformer:
    => http://python.developpez.com/faq/?page=Unicode

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 259
    Points : 195
    Points
    195
    Par défaut
    Bon, ben merci pour votre aide
    Je comprends pas, j'ai dû rater un truc faut croire. J'étais pourtant persuadé d'avoir tout essayé, mais bon...
    En fait, quand je rentrais du texte, je rentrais de l'unicode. En l'encodant, je n'ai plus le message d'erreur.
    Il me reste plus qu'à l'encoder de manière à pouvoir comparer les accents entre eux (ou alors de retourner à ma fonction à la con qui supprime les accents )
    Désolé pour la bourde et encore merci pour vos réponses.

    EDIT : pour l'encodage, je fais comme recommandé dans la FAQ dans le dernier exemple, et c'est nickel
    La vie n'est qu'une succession d'éternels recommencements

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/04/2014, 23h43
  2. Réponses: 10
    Dernier message: 26/01/2013, 16h25
  3. Convertir en ASCII chaque bit d'un Byte ?
    Par lcoulon dans le forum Débuter
    Réponses: 1
    Dernier message: 05/11/2011, 18h11
  4. UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9'
    Par slaima15 dans le forum Général Python
    Réponses: 4
    Dernier message: 06/06/2011, 23h18
  5. UnicodeEncodeError: 'ascii' codec can't encode character
    Par WebTotoche dans le forum Général Python
    Réponses: 5
    Dernier message: 06/04/2011, 08h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo