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 :

Ce qui rentre ne sort pas ! [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    retraité defense
    Inscrit en
    Janvier 2024
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité defense
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2024
    Messages : 30
    Par défaut Ce qui rentre ne sort pas !
    Bonjour

    en faisant des tests sur la gestion de contenu j ai créé un fichier
    texte (.txt)avec notepad rempli d'accents et de caracteres spéciaux
    pour valider mes traitements ultérieurs,
    ci dessous :
    Je m’en rappellerais si j’avais créé un programme capable de parler.
    é&'- rtue à )^ù:; l'école l'arrivée -AtESERE
    Et puis tiens, je suis en train de taper la causette avec un ordinateur !
    Je deviens vraiment cinglé ! C’est fini, j’arrête l’informatique !
    En ouvrant ce fichier avec python c'est ennuyeux car
    je me retrouve avec ce qui suit :
    Je m’en rappellerais si j’avais créé un programme capable de parler.
    é&'- rtue Ã* )^ù:; l'école l'arrivée -AtESERE
    Et puis tiens, je suis en train de taper la causette avec un ordinateur !
    Je deviens vraiment cinglé ! C’est fini, j’arrête l’informatique !
    A tout hasard je joins le source python ( très classique)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Définition de la fonction qui ouvre le filedialog et récupère le chemin du fichier sélectionné
    def ouvrir_fichier():
        chemin_fichier = filedialog.askopenfilename(initialdir = "/", title = "Sélectionner un fichier texte", filetypes = (("Fichiers texte", "*.txt"), ("Tous les fichiers", "*.*")))
        if chemin_fichier:
            # Si un fichier a été sélectionné, on lit son contenu et on l'affiche dans le widget texte
            with open(chemin_fichier, "r") as fichier:
                contenu = fichier.read()
                zone_texte.delete("1.0", tk.END) # Efface le contenu précédent de la zone de texte
                zone_texte.insert("1.0", contenu)
    Après une foultitude de recherches
    1 - est-ce normal?
    2 - comment obtenir en sortie la même chose qu'en entrée?
    meeeeerci & bonne nuit

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par RAMEX Voir le message
    Apres une foultitude de recherches
    1 - est-ce normal?
    2 - comment obtenir en sortie la meme chose qu'en entree?
    L'encoding. Ton fichier a été créé avec blocnote donc très probablement encodé en ascii, et Python travaille en utf-8 (qui est devenu la norme). C'est un peu comme si tu tentais de lire de l'allemand en lui appliquant une grammaire française.
    Ouvre-le avec notepad++ (un éditeur bien plus sympa et gratuit). Tu as une option pour le convertir en utf-8 (menu "Encodage" en haut). Ou alors demande explicitement à Python de travailler en latin-1 (le nom officiel de l'ascii). Ca se demande lors de l'ouverture.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 241
    Par défaut
    Hello,
    Citation Envoyé par Sve@r Voir le message
    L'encoding. Ton fichier a été créé avec blocnote donc très probablement encodé en ascii, et Python travaille en utf-8 (qui est devenu la norme). C'est un peu comme si tu tentais de lire de l'allemand en lui appliquant une grammaire française.
    Ben non les 127 premiers caractères de l'UTF-8 c'est l'ASCII :
    Généralement en Unicode, un caractères prend 2 octets. Autrement dit, le moindre texte prend deux fois plus de place qu'en ASCII. C'est du gaspillage.
    De plus, si on prend un texte en français, la grande majorité des caractères utilisent seulement le code ASCII. Seuls quelques rares caractères nécessitent l'Unicode.
    On a donc trouvé une astuce: l'UTF-8.
    Un texte en UTF-8 est simple: il est partout en ASCII, et dès qu'on a besoin d'un caractère appartenant à l'Unicode, on utilise un caractère spécial signalant "attention, le caractère suivant est en Unicode".
    Par exemple, pour le texte "Bienvenue chez Sébastien !", seul le "é" ne fait pas partie du code ASCII. On écrit donc en UTF-8:
    Bienvenue chez Sébastien !
    Ce qu'il y a de bizarre dans le texte de RAMEX c'est l'apostrophe qui normalement existe en ASCII. L'apostrophe utilisée n'est pas celle de l'ASCII.

    Ami calmant, J.P

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Ben non les 127 premiers caractères de l'UTF-8 c'est l'ASCII
    Ce qu'il y a de bizarre dans le texte de RAMEX c'est l'apostrophe qui normalement existe en ASCII. L'apostrophe utilisée n'est pas celle de l'ASCII
    Tes remarques sont légitimes... mais je ne vois pas d'autre cause.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 241
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Tes remarques sont légitimes... mais je ne vois pas d'autre cause.
    D'après ce qu'on voit en sortie, il semblerait que le fichier d'entrée soit encodé en UTF-8 mais pas interprété comme tel. Le code de fred1599 devrait normalement rétablir une bonne interprétation. Par défaut en python sous windows la lecture d'un fichier se fait en ANSI (utf-8 sous linux).

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Par défaut en python sous windows la lecture d'un fichier se fait en ANSI (utf-8 sous linux).
    Ah ? Ca je savais pas. Je pensais que c'était utf-8 par défaut dans les deux mondes
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 064
    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 : 4 064
    Par défaut
    Bonjour,

    j ai créé un fichier
    Vérifiez que le fichier est enregistré avec l'encodage UTF-8.

    Dans le cas où vous ne le faîtes pas pour d'autres raisons, ouvrez votre fichier avec l'argument encoding à UTF-8.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    with open("...", 'r', encoding='utf8')
    EDIT: grilled

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

Discussions similaires

  1. [AC-2010] Requête qui ne sort pas ce que je veux
    Par aculy dans le forum Requêtes et SQL.
    Réponses: 20
    Dernier message: 07/01/2019, 18h35
  2. Couleur du texte qui ne sort pas comme je le veux
    Par Alban 56 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 01/03/2010, 20h28
  3. Réponses: 7
    Dernier message: 23/10/2005, 22h38
  4. [MFC] Ces fenêtres qui ne s'affichent pas..
    Par Davide dans le forum MFC
    Réponses: 3
    Dernier message: 19/11/2003, 11h30
  5. [D7-EXCEL2000] Formule dans cellule Excel qui ne se calcule pas
    Par Albertolino dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 09/09/2003, 14h18

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