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 :

La commande print : comment obtenir une impression correcte pour les lettres accentuées ? [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Ex ingénieur système
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ex ingénieur système

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Par défaut La commande print : comment obtenir une impression correcte pour les lettres accentuées ?
    Bonjour,

    Un fichier texte, généré avec notepad par ex. en utf-8, et contenant la chaîne : &é#{[|è_\ç^à@)]}+=£$¤µ*%ù§!/:.;?,<> est lu puis imprimé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    >>> chemin_csv =r"Y:\test-accent_i.txt"
    >>> with open(chemin_csv, "r") as entree:
            for ligne in entree:
                print("ligne : ", ligne)
     
    ligne :  &é#{[|è_\ç^à @)]}+=£$¤µ*%ù§!/:.;?,<>
    La chaîne imprimée est bien différente de celle lue, que l'exécution soit faite avec IDDLE ou dans un terminal.

    D'avance, merci de votre aide.
    Windows 10 1803, Python 3.6.3

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

    Si la question est sur "print" et les caractères accentués, le test serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> s = '&é#{[|è_\ç^à@)]}+=£$¤µ*%ù§!/:.;?,<>'
    >>> print(s)#{[|è_\ç^à@)]}+=£$¤µ*%ù§!/:.;?,<>
    >>>
    si cela donne un résultat satisfaisant, la question n'est pas sur "print" mais sur l'encoding avec lequel a été lu le fichier.
    Normalement, il se précise dans open(....).
    Comme vous ne le faites pas, çà utilisera l'encoding par défaut. Donc, écrire open(chemin_csv, "r", encoding='utf-8') devrait produire un résultat satisfaisant côté "print".
    Le reste dépend du résultat des petites opérations précédentes.

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

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ex ingénieur système
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ex ingénieur système

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Par défaut
    Citation Envoyé par wiztricks Voir le message

    Si la question est sur "print" et les caractères accentués, le test serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> s = '&é#{[|è_\ç^à@)]}+=£$¤µ*%ù§!/:.;?,<>'
    >>> print(s)#{[|è_\ç^à@)]}+=£$¤µ*%ù§!/:.;?,<>
    >>>
    si cela donne un résultat satisfaisant, la question n'est pas sur "print" mais sur l'encoding avec lequel a été lu le fichier.
    Merci, Wiztricks, pour cette bienvenue leçon de logique.

    Merci aussi pour votre rapide réponse qui résout mon pb.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/04/2014, 10h01
  2. Réponses: 12
    Dernier message: 26/11/2010, 14h22
  3. Réponses: 2
    Dernier message: 14/06/2007, 11h47
  4. Réponses: 4
    Dernier message: 29/09/2006, 11h53
  5. Réponses: 5
    Dernier message: 21/07/2006, 14h52

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