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 :

problèmes de décodage/encodage d'un fichier texte en python 3.


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 11
    Points
    11
    Par défaut problèmes de décodage/encodage d'un fichier texte en python 3.
    bonjour toutes et tous,
    je me permet de ré-activer cette discussion, car j'ai un problème de lecture d'un fichier texte.
    Quand je charge ce fichier texte avec Geany, il apparaît comme étant codé en ISO-8859-1.
    Si j'utilise "file a.ged", voici ce que j'obtiens "a.ged: GEDCOM genealogy text version ,"; après la virgule nada, walou !
    Je complète en disant que je ne peux l'ouvrir qu'avec "ISO-8859-1" ou "Latin-1" mais pas en "utf-8" ce qui devrait être le cas.
    Si quelqu'un a une solution à me fournir, je suis preneur !
    Dans l'attente je vous souhaite un bon après-midi.
    Amicalement,
    Patrick.

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 812
    Points : 7 097
    Points
    7 097
    Par défaut
    Tu peux utiliser la commande iconv pour retourner un fichier avec l'encodage que tu souhaites...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Citation Envoyé par PMULOT Voir le message
    Quand je charge ce fichier texte avec Geany, il apparaît comme étant codé en ISO-8859-1.
    Si j'utilise "file a.ged", voici ce que j'obtiens "a.ged: GEDCOM genealogy text version ,"; après la virgule nada, walou !
    Un éditeur de fichier texte utilise ses propres règles pour savoir quel "coding" utiliser pour lire un fichier.
    (et Python utilise d'autres règles). Les règles appliquées par Geany sont documentées ici.


    Citation Envoyé par PMULOT Voir le message
    Je complète en disant que je ne peux l'ouvrir qu'avec "ISO-8859-1" ou "Latin-1" mais pas en "utf-8" ce qui devrait être le cas.
    Si le fichier est codé en "latin-1" pourquoi essayer de l'ouvrir en "utf-8"? C'est sur qu'il y a de bonnes chances que çà plante avant que vous l'ayez converti (avec, par exemple, l'utilitaire "iconv" comme mentionné par fred mais écrire un programme Python qui lit le fichier dans le coding X pour le ré-écrire en coding Y fonctionne aussi).

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

  4. #4
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Si le fichier est codé en "latin-1" pourquoi essayer de l'ouvrir en "utf-8"? C'est sur qu'il y a de bonnes chances que çà plante avant que vous l'ayez converti (avec, par exemple, l'utilitaire "iconv" comme mentionné par fred mais écrire un programme Python qui lit le fichier dans le coding X pour le ré-écrire en coding Y fonctionne aussi).

    - W
    Bonsoir wiztricks,

    Au départ ce fichier est sensé être codé en UTF-8. Or mon programme Python3 refuse de le lire sous cet encodage. Après plusieurs heures à chercher le pourquoi du comment, j'ai réussi à le lire avec un encodage "ISO-8859-1".

    LE PROBLÈME EST QUE JE SAIS MÊME PAS SI C'EST CORRECT OU PAS. Il n'y a rien qui puisse me l'indiquer. En plus, il m'affiche des caractères cabalistiques dans la console, et aussi dans mes fichiers Sqlite !

    Je croyais qu'avec Python 3, il n'y avait plus de problèmes de ce type ?????

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Citation Envoyé par PMULOT Voir le message
    Au départ ce fichier est sensé être codé en UTF-8. Or mon programme Python3 refuse de le lire sous cet encodage. Après plusieurs heures à chercher le pourquoi du comment, j'ai réussi à le lire avec un encodage "ISO-8859-1".
    Un fichier sensé être codé en utf-8 devrait être lu facilement par Python.
    Si çà plante, c'est peut être qu'il n'est pas codé "utf-8" (et çà, il n'y a que vous qui savez comment à été fabriqué ce fichier). Si vous lisez le fichier en disant essaie "latin-1", çà ne plantera pas car, çà saura associer un caractère à n'importe quel octet dans 0..255 mais çà pourra donner un affichage "cabalistique".

    note: avec utf-8 seuls les caractères ASCII sont codés sur un octet, les autres sont codés sur plusieurs octets et le codage permet de détecter des erreurs qui feront planter avant d'avoir tout lu.

    Citation Envoyé par PMULOT Voir le message
    Je croyais qu'avec Python 3, il n'y avait plus de problèmes de ce type ?????
    Au départ, vous parliez de la lecture de fichier texte avec l'éditeur Geany.
    Que vient faire Python3 là dedans? Mystère.
    Un peu de code, des messages d'erreur, une copie du fichier lu, l'environnement système utilisé, ... un minimum quoi.

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

  6. #6
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 11
    Points
    11
    Par défaut
    c'est du grand n'importe quoi vos réponses; vous n'avez pas lu mes messages entièrement.
    Au départ, il y a un fichier texte issu d'une application de généalogie; ce fichier texte devrait être codé en utf-8.
    D'un autre côté, j'ai écrit un programme en PYTHON3, qui doit me permettre de lire ce fichier texte, et d'alimenter une base de données sqlite.
    Et c'est là que ça pêche; si entre le fichier texte, le programme python3, la console et la base de données, il faut coder tout ce petit monde de manière différente, on n'est pas prêt d'y arriver. Des programmes en PHP ou en C++ arrivent faire ce boulot sans aucun problème !!!
    Laissez tomber, ça va pas rebondir ... de mon côté, je laisse tomber le piteux python. En 40 ans d'informatique, je n'ai jamais vu un langage aussi merdique.
    Salutations.

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Citation Envoyé par PMULOT Voir le message
    En 40 ans d'informatique, je n'ai jamais vu un langage aussi merdique.
    Salutations.
    Et en 40 ans tu n'as toujours pas appris qu'il suffit de montrer tes lignes de code pour obtenir une aide réelle.

    On a le droit de s'y prendre comme un manche quand on débute, on a le droit de mal s'exprimer quand on forum pour la première fois, mais, désolé, on a plus droit à ces excuses quand on prétend être un vétéran dans le domaine.

    Salut à toi aussi.

Discussions similaires

  1. Problème d'ecriture arabe dans un fichier texte
    Par gateserv dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 30/08/2008, 11h44
  2. Comment connaître l'encodage d'un fichier texte?
    Par sergentgarcia dans le forum Général Python
    Réponses: 3
    Dernier message: 26/05/2008, 10h41
  3. Problème de format d'import de fichier texte
    Par jsteffe dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/11/2007, 12h40
  4. Gérer l'encodage d'un fichier texte
    Par MITCH31 dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 15/05/2007, 10h24
  5. [VB.NET]Problème de lecture et écriture sur fichier texte
    Par zouhib dans le forum Windows Forms
    Réponses: 25
    Dernier message: 23/05/2006, 15h30

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