Lecture d'un fichier texte avec lettres accentuées
pzorba75
Messages postés
76
Date d'inscription
Statut
Membre
Dernière intervention
-
Python371 -
Python371 -
Bonjour,
Je fais mes premiers pas avec Python et Pyscripter et bute sur un problème d'accents que je ne sais pas résoudre tant les fils Internet sur le sujet sont nombreux et déroutants.
J'ai créé avec Notepad++ un fichier csv, 4 champs séparés par des virgules que je lis avec le script suivant :
Fichier Notepad au format csv :
XXXXXX,Pierre,1947,août,7
YYYYYYY,Bernadette,1948,novembre,5
XXXXXXYYYYYYYY,Florence,1979,novembre,26
ZZZZZZZ,Andrée,1927,janvier,09
Script Python dans Pyscripter :
J'utilise pour apprendre Python les vidéos que je glane sur Internet, les plus utiles étant Python au Lycée d'Arnaud Bodin.
Quand ce script est lancé, j'obtient dans la console :
['YYYYYYY', 'Bernadette', '1948', 'novembre', '5']
['XXXXXXYYYYYYYY', 'Florence', '1979', 'novembre', '26']
['ZZZZZZZ', 'Andrée', '1927', 'janvier', '09']
['XXXXXX', 'YYYYYYY', 'XXXXXXYYYYYYYY', 'ZZZZZZZ']
Andrée
>>>
Ce script fonctionne correctement quand j'utilise une variable contenant une lettre accentuée (wnom='Andrée') mais ne reconnaît par l'accent quand il est dans le fichier lu par la méthode .reader .
Ma question : comment faire pour trouver le bon codage du fichier lu et comment le signaler au script Python si c'est nécessaire?
Merci d'avance pour l'aide apportée, je ne suis pas du tout "geek", juste un apprenti pour faire des choses simples et réutilisables avec des élèves de lycée lors d'exercices d'algorithmique.
Pierre
Je fais mes premiers pas avec Python et Pyscripter et bute sur un problème d'accents que je ne sais pas résoudre tant les fils Internet sur le sujet sont nombreux et déroutants.
J'ai créé avec Notepad++ un fichier csv, 4 champs séparés par des virgules que je lis avec le script suivant :
Fichier Notepad au format csv :
XXXXXX,Pierre,1947,août,7
YYYYYYY,Bernadette,1948,novembre,5
XXXXXXYYYYYYYY,Florence,1979,novembre,26
ZZZZZZZ,Andrée,1927,janvier,09
Script Python dans Pyscripter :
# import csv fic=open('Fichier-00-csv-1.csv') fic_donnees=csv.reader(fic) nom=[] for ligne in fic_donnees: print(ligne) c1=ligne[0] nom.append(c1) print(nom) wnom='Andrée' print(wnom)
J'utilise pour apprendre Python les vidéos que je glane sur Internet, les plus utiles étant Python au Lycée d'Arnaud Bodin.
Quand ce script est lancé, j'obtient dans la console :
['YYYYYYY', 'Bernadette', '1948', 'novembre', '5']
['XXXXXXYYYYYYYY', 'Florence', '1979', 'novembre', '26']
['ZZZZZZZ', 'Andrée', '1927', 'janvier', '09']
['XXXXXX', 'YYYYYYY', 'XXXXXXYYYYYYYY', 'ZZZZZZZ']
Andrée
>>>
Ce script fonctionne correctement quand j'utilise une variable contenant une lettre accentuée (wnom='Andrée') mais ne reconnaît par l'accent quand il est dans le fichier lu par la méthode .reader .
Ma question : comment faire pour trouver le bon codage du fichier lu et comment le signaler au script Python si c'est nécessaire?
Merci d'avance pour l'aide apportée, je ne suis pas du tout "geek", juste un apprenti pour faire des choses simples et réutilisables avec des élèves de lycée lors d'exercices d'algorithmique.
Pierre
Configuration: Windows 10 à jour, Logiciels libres Open Office, MikTex, Chrome, Python 3.6, PyScripter et quelques outils basiques.
A voir également:
- Lecture d'un fichier texte avec lettres accentuées
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
3 réponses
Bonjour
Je ne code pas en python mais ton problème est typique du problème « d’encoding ».
J’ai trouvé un article qui explique bien et te donne des solutions
http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/
Par rapport au tuto vidéo, c’est la mode, mais la mode c’est pas forcément bien. La vidéo apporte un vrai plus pour apprendre à changer une roue, passer correctement le fil dans la machine à coudre, faire un beau point de croix. Mais pour coder c’est pas le pied. Je ne connais pas les vidéos dont tu parles, mais dans la majorité, tu attends 10 minutes que l’auteur tape 3 lignes de codes (que tu aurais lues en 10 secondes) en bafouillant, se trompe se reprennent, compile lance le script, à zut ça plante, etc... et quand ça marche il faut faire une pause pour réécrire le code de ton côté.
Avec un tuto écrit, normalement le code est fonctionnel, le texte a été relu, il est clair. Et surtout tu peux copier coller le code.
Et même un bon vieux livre est plus adapté que la vidéo.
Je te conseille developper.com tous leur cours sont de qualité, en second openclassroom, mais je connais des exemples où les codes présentés ne fonctionnaient (je ne sais pas si c’est le cas des cours de python)
Je ne code pas en python mais ton problème est typique du problème « d’encoding ».
J’ai trouvé un article qui explique bien et te donne des solutions
http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/
Par rapport au tuto vidéo, c’est la mode, mais la mode c’est pas forcément bien. La vidéo apporte un vrai plus pour apprendre à changer une roue, passer correctement le fil dans la machine à coudre, faire un beau point de croix. Mais pour coder c’est pas le pied. Je ne connais pas les vidéos dont tu parles, mais dans la majorité, tu attends 10 minutes que l’auteur tape 3 lignes de codes (que tu aurais lues en 10 secondes) en bafouillant, se trompe se reprennent, compile lance le script, à zut ça plante, etc... et quand ça marche il faut faire une pause pour réécrire le code de ton côté.
Avec un tuto écrit, normalement le code est fonctionnel, le texte a été relu, il est clair. Et surtout tu peux copier coller le code.
Et même un bon vieux livre est plus adapté que la vidéo.
Je te conseille developper.com tous leur cours sont de qualité, en second openclassroom, mais je connais des exemples où les codes présentés ne fonctionnaient (je ne sais pas si c’est le cas des cours de python)
Au temps pour moi, c’est à ton lecteur de csv qu’il faut dire que le fichier texte est en utf 8
https://stackoverflow.com/questions/904041/reading-a-utf8-csv-file-with-python
https://stackoverflow.com/questions/904041/reading-a-utf8-csv-file-with-python
Pour mon cas : Je pense que le fichier en entrée est en UTF8,d'après l'encoding affiché par Notepad++ et que Pyscripter gère le script en UTF8 par défaut, si bien que tout devrait marcher, et ce n'est pas le cas.
Je reste bloqué.