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 :

"Unicode error". Je ne comprends absolument pas comment enlever ce Unipain


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 2
    Par défaut "Unicode error". Je ne comprends absolument pas comment enlever ce Unipain
    Bonjour,

    Comme tout le monde, j'ai des problèmes avec "UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 9: ordinal not in range(128)".

    J'utilise PYTHON3.

    J'ai très bien compris le problème mais pas comment on le règle. J'ai regardé tout StackOverFlow, la vidéo "Pragmatic Unicode, or, How do I stop the pain?"...etc. Bref malgré ça, je ne comprends absolument pas comment on règle le problème.

    Et j'ai ce problème dans tous mes codes... Et je commence à... pleurer tellement je comprends rien à ce qu'il faut faire.

    Aujourd'hui je souhaite m'essayer au webscrapping, sur cet URL: "http://www.paroles.net/tryo/paroles-l-hymne-de-nos-campagnes", et ajouter les paroles, dans un CSV (par exemple, ou JSON ca me va aussi).

    Donc voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    from lxml import html
    import requests
    import csv
     
    filecsv='/Users/.../john.csv'
     
    page = requests.get('http://www.paroles.net/tryo/paroles-l-hymne-de-nos-campagnes')
    tree = html.fromstring(page.content)
     
    parole = tree.xpath('//div[@class="song-text"]/text()')
     
     
    with open(filecsv, 'w') as csvfile:
    	spamwriter= csv.writer(csvfile, delimiter=',', quotechar=';')
     
    	spamwriter=spamwriter.writerow([parole[1]])
    Voici l'erreur que je recois du terminal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Traceback (most recent call last):
      File "/Users/Stephane/Downloads/scrappchanson.py", line 16, in <module>
        spamwriter=spamwriter.writerow([parole[1]])
    UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 9: ordinal not in range(128)
    Pourriez-vous me donner un coup de main? Parce que je ne comprends absolument pas quoi faire! (presque j'ai envie d'arrêter python... imaginez mon désespoir) !

    (me donner un coup de main pour ce code, qui est la comme exemple, mais afin que je comprennes pour les autres codes Merci )!

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2013
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 485
    Par défaut
    Étrange, j'ai copié ton script, j'ai juste changé le contenu de la variable 'filecsv' sinon j'avais un "No such file or directory".
    Et là, nickel, j'ai le fichier csv qui est créer avec la deuxième ligne de la chanson.

    Rajoute au début de ton script la ligne
    Sinon, il y a cette article qui résume bien tout : http://sametmax.com/lencoding-en-pyt...is-pour-toute/
    Peut être que tu trouveras ton souci.

    Bonne chance

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 2
    Par défaut
    J'ai essayé même erreur.

    Hum. Y a un truc de bizare alors. Est-ce que je supprimerais pas python3+python2 de mon mac et réinstaller les deux? Et tu as les accents dans ton fichier.csv?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par SulotPy Voir le message
    Pourriez-vous me donner un coup de main? Parce que je ne comprends absolument pas quoi faire! (presque j'ai envie d'arrêter python... imaginez mon désespoir) !
    Avec Python3, l'encoding par défaut des fichiers est celui retourné par locale.getpreferredencoding(). Le comportement de votre programme peut donc changer en fonction de l'environnement de l'utilisateur. C'est une bonne raison pour ne pas laisser Python utiliser une valeur par défaut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    with open(filecsv, 'w', encoding='utf-8') as csvfile:
         ....
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Je ne comprend absolument pas les classes
    Par haulier dans le forum Général Python
    Réponses: 4
    Dernier message: 02/02/2009, 21h26
  2. [VB6>VB.NET] Comment coder "break on all errors"
    Par RiiiDD dans le forum VB.NET
    Réponses: 5
    Dernier message: 07/03/2006, 12h53

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