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 :

Impossible de lire correctement les accents d'un fichier [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 91
    Par défaut Impossible de lire correctement les accents d'un fichier
    Bonjour,
    J'ai récupéré dans bloque-note des données sur un site par un copier coller, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Bleu céleste (38, 196, 236)
    Bleu céruléen (15, 157, 232)
    Bleu céruléen (53, 122, 183)
    Lavallière (143, 89, 34)
    Je les lis par ce programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # -*- coding: windows-1252 -*-
    from codecs import decode
    fichier="D:\\Patrice\\Python\\tkinter\\Outils\\TesteLecture.txt"
    en_lecture=open(fichier,'r')
    lignes=en_lecture.readlines()
    en_lecture.close()
    for c in lignes:
        print(c.strip().split("\n"))
    Impossible de récupérer correctement les accents et autres caractères 'spéciaux'. Voici ce que je récupère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ['Bleu céleste (38, 196, 236)']
    ['Bleu céruléen (15, 157, 232)']
    ['Bleu céruléen (53, 122, 183)']
    ['Lavallière (143, 89, 34)']
    Sur internet on parle des méthodes encode et decode, mais je n'arrive pas à les trouver dans python.
    L'encodage du site où j'ai récupéré les données est charset=windows-1252,
    et pour bloc-note je trouve dans la barre d'état Windows(CRLF) et utf8.
    Merci de m'aider à lire correctement ce type de fichier.

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

    L'encoding se précise à l'open: open(fichier,'r', encoding='utf-8')

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

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    J'ai juste une remarque (tu as déjà eu la réponse à ta question) ne serait-ce pas mieux de lire le fichier ligne par ligne plutôt que de lire l'ensemble des lignes pour ensuite diviser cet ensemble en ligne.

  4. #4
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 91
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    Salut,

    J'ai juste une remarque (tu as déjà eu la réponse à ta question) ne serait-ce pas mieux de lire le fichier ligne par ligne plutôt que de lire l'ensemble des lignes pour ensuite diviser cet ensemble en ligne.
    merci wiztricks et beginner
    ça fonctionne.

    et pour répondre à beginner,
    je ne sais pas lire ligne par ligne.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Citation Envoyé par Cemalatowilo Voir le message
    je ne sais pas lire ligne par ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    en_lecture=open(fichier,'r',...)
    for c in en_lecture:
          ....
    Puis vous avez des bons tutos qu'on peut ouvrir aux chapitres qui parlent des fichiers.

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

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par Cemalatowilo Voir le message
    et pour répondre à beginner,
    je ne sais pas lire ligne par ligne.
    En fait j'ai lu trop vite, j'ai cru que tu divisais l'ensemble avec split mais c'est pas ça... Du coup oui lire l'ensemble des lignes comme tu le fais c'est bien finalement mais du coup split n'est pas utile sauf si tu tiens à afficher une liste au lieu d'une chaine... Pour afficher la chaine on peut faire juste ça print(c.strip()) à la place de print(c.strip().split("\n")) qui affiche une liste contenant la chaine...

  7. #7
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 91
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    En fait j'ai lu trop vite, j'ai cru que tu divisais l'ensemble avec split mais c'est pas ça... Du coup oui lire l'ensemble des lignes comme tu le fais c'est bien finalement mais du coup split n'est pas utile sauf si tu tiens à afficher une liste au lieu d'une chaine... Pour afficher la chaine on peut faire juste ça print(c.strip()) à la place de print(c.strip().split("\n")) qui affiche une liste contenant la chaine...
    Ok, merci
    je teste

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

Discussions similaires

  1. [MySQL] Impossible d'afficher correctement les données
    Par vacknov dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 08/12/2008, 21h08
  2. Réponses: 5
    Dernier message: 09/11/2006, 16h51
  3. [Oracle] afficher correctement les accents? (ou 'charset hell'!)
    Par malk.zameth dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 14/08/2006, 11h32
  4. impossible de lire 2 fois de suite un fichier
    Par porcher dans le forum C++
    Réponses: 8
    Dernier message: 14/02/2005, 01h44

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