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 encode character


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 42
    Par défaut 'ascii' codec can't encode character
    Bonjour

    Je souhaite télécharger des pdf à partir d'une liste de liens que je lis dans un fichier.
    J'y arrive sauf que certains ont des accents et j'ai l'erreur:
    UnicodeEncodeError: 'ascii' codec can't encode character

    J'ai essayé avec codecs, io ou en précisant UTF-8 mais cela ne marche pas...

    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
    import urllib.request
    import time
     
    def Read_File(name): 
        with open("pdf_list.txt",'r') as filin:
            for ligne in filin:
                if name in ligne:
                    return (ligne[(ligne.rfind('[')):(ligne.rfind(']'))+1])
     
    pdf_links= eval(Read_File("pdf_list"))
     
    for url_file in pdf_links:
    	print(url_file)
    	name_file ='file.pdf'
    	urllib.request.urlretrieve(url_file,name_file)
    	time.sleep(1)
    Merci

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Citation Envoyé par DantonLuc Voir le message
    J'y arrive sauf que certains ont des accents et j'ai l'erreur:
    UnicodeEncodeError: 'ascii' codec can't encode character

    J'ai essayé avec codecs, io ou en précisant UTF-8 mais cela ne marche pas..
    Si vous n'essayez pas avec l'encoding qui va bien, en prendre un au hasard ne va pas toujours marcher. A vous de savoir quel encoding a été utilisé pour le fichier.

    note: les PDF sont codés en ASCII et la bibliothèque qui lit le fichier devrait savoir fabriquer les caractères non-ASCII qui vont bien à partir des informations qu'il contient. A partir de là, on récupère un string Unicode qu'on pourra écrire avec l'encoding qu'on veut dans un fichier texte.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 42
    Par défaut
    Merci pour votre réponse.

    je ne sais pas comment trouver l'encoding de mon fichier qui contient les liens.

    J'ai trouvé les liens avec beautifulSoup et j'ai crée une liste avec.

    Je l'ai enregistré comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    with open('pdf_list.txt','w') as f:
        f.write('pdf_list=')
        f.write(str(pdf_list_ss))

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    Avez-vous moyen de regénérer le fichier pdf_list.txt ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    with open('pdf_list.txt','w', encoding='utf-8') as f:
        f.write('pdf_list=')
        f.write(str(pdf_list_ss))

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 42
    Par défaut
    Oui je viens de le faire en ajoutant l'encoding='utf-8'

    Mais j'ai toujours la même erreur lorsque j'essaye de les télécharger.
    Ca marche sauf si l'url a un accent dans son url, du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://www.site.en question/nomdufichieravecun_é_dansletitre.pdf

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Citation Envoyé par DantonLuc Voir le message
    Ca marche sauf si l'url a un accent dans son url, du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://www.site.en question/nomdufichieravecun_é_dansletitre.pdf
    Ca serait bien de montrer le message d'erreur complet et le code qui va avec: une URL avec des accents doit être aussi encodée (mais pas UTF-8). Du coup ce que vous montrez n'a pas trop de sens.

    Par ailleurs, décrire un problème se fait avec un minimum de termes techniques qui s'acquièrent avec de la formation. Sinon, vous racontez des trucs que personne ne comprend.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/04/2014, 23h43
  2. Réponses: 10
    Dernier message: 26/01/2013, 16h25
  3. 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
  4. 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
  5. 'ascii' codec can't decode byte
    Par Bibicmoi dans le forum Général Python
    Réponses: 5
    Dernier message: 28/08/2007, 23h15

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