Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.python > #4338 > unrolled thread
| Started by | Dominique <dominique.sextant@orange.fr.invalid> |
|---|---|
| First post | 2026-06-24 08:01 +0200 |
| Last post | 2026-06-26 03:11 +0200 |
| Articles | 6 — 4 participants |
Back to article view | Back to fr.comp.lang.python
Encodage caractères. Dominique <dominique.sextant@orange.fr.invalid> - 2026-06-24 08:01 +0200
Re: Encodage caractères. Damien Wyart <damien.wyart@free.fr> - 2026-06-24 11:03 +0200
Re: Encodage caractères. yves <yves@free.invalid> - 2026-06-24 13:48 +0000
Re: Encodage caractères. Dominique <dominique.sextant@orange.fr.invalid> - 2026-06-25 17:43 +0200
Re: Encodage caractères. yves <yves@free.fr.invalid> - 2026-06-25 20:19 +0200
Re: Encodage caractères. Dominique <dominique.sextant@orange.fr.invalid> - 2026-06-26 03:11 +0200
| From | Dominique <dominique.sextant@orange.fr.invalid> |
|---|---|
| Date | 2026-06-24 08:01 +0200 |
| Subject | Encodage caractères. |
| Message-ID | <111frs7$2plfv$1@dont-email.me> |
Bonjour, J'ai écrit, à titre professionnel, un script Python assez simple qui se contente de modifier deux fichiers csv. Je rencontre un problème qui me semble aléatoire d'encodage des fichiers csv. Parfois c'est de l'utf-8, parfois c'est de l'ISO 8859-15, parfois c'est du latin1. Bref, je tâtonne et je perds du temps. Existe-t-il une solution pour identifier exactement l'encodage d'un fichier csv et l'ouvrir avec le bon 'encoding' ? Merci et belle journée à tous, -- Dominique Esto quod es
[toc] | [next] | [standalone]
| From | Damien Wyart <damien.wyart@free.fr> |
|---|---|
| Date | 2026-06-24 11:03 +0200 |
| Message-ID | <6a3b9d6c$0$7093$426a74cc@news.free.fr> |
| In reply to | #4338 |
Bonjour, * Dominique <dominique.sextant@orange.fr.invalid> in fr.comp.lang.python: > Je rencontre un problème qui me semble aléatoire d'encodage des > fichiers csv. Parfois c'est de l'utf-8, parfois c'est de l'ISO > 8859-15, parfois c'est du latin1. Bref, je tâtonne et je perds du > temps. > Existe-t-il une solution pour identifier exactement l'encodage d'un fichier csv > et l'ouvrir avec le bon 'encoding' ? Une approche naïve si la liste des encodages est courte consiste à utiliser try/except ; simple mais pas vraiment élégant. Sinon il y a des bibliothèques de détection mais bien sûr elles ne peuvent pas être fiables à 100% (elle travaillent sur un échantillon du fichier et il n'y a pas forcément unicité). La plus connue est chardet (on en a pas mal parlé dans le monde open source récemment car elle a été réécrite entièrement et cela a posé des questions de licences) : https://chardet.readthedocs.io/en/latest/usage.html https://github.com/chardet/chardet https://lwn.net/Articles/1061534/ La façon précise de relier chardet à la partie CSV dépendra de la façon de traiter le format : traitement direct sur les chaînes, utilisation du module csv standard, utilisation de Pandas... -- DW
[toc] | [prev] | [next] | [standalone]
| From | yves <yves@free.invalid> |
|---|---|
| Date | 2026-06-24 13:48 +0000 |
| Message-ID | <6a3be014$0$10315$426a74cc@news.free.fr> |
| In reply to | #4338 |
Le Wed, 24 Jun 2026 08:01:43 +0200, Dominique a écrit: Bonjour, > J'ai écrit, à titre professionnel, un script Python assez simple qui se > contente de modifier deux fichiers csv. Sans répondre directement à la question, est-ce que tu peux avoir un contrôle sur ces deux fichiers csv, sur la façon dont ils sont produits ? Ou une possibilité de feedback ? Ou pas du tout ? @+ -- Yves
[toc] | [prev] | [next] | [standalone]
| From | Dominique <dominique.sextant@orange.fr.invalid> |
|---|---|
| Date | 2026-06-25 17:43 +0200 |
| Message-ID | <111jiam$3shng$1@dont-email.me> |
| In reply to | #4340 |
Le 24/06/2026 à 15:48, yves a écrit :
> Le Wed, 24 Jun 2026 08:01:43 +0200, Dominique a écrit:
>
> Bonjour,
>
>> J'ai écrit, à titre professionnel, un script Python assez simple qui se
>> contente de modifier deux fichiers csv.
>
> Sans répondre directement à la question, est-ce que tu peux avoir un
> contrôle sur ces deux fichiers csv, sur la façon dont ils sont produits ?
>
> Ou une possibilité de feedback ?
>
> Ou pas du tout ?
>
> @+
En fait, j'ai utilisé bêtement, en ligne de commande, file -i
/mon/fichier.csv
Avec l'encodage ainsi trouvé je l'ouvre sans problème. Je décide
moi-même de l'encodage de sortie (pourquoi ai-je retenu ISO-8859-15 ? Je
ne sais pas, mais comme tout fonctionne 😊)
with open("/HOME/residents.csv", "r",encoding='ISO-8859-15') as res:
Je vous remercie tous les deux pour vos conseils toujours avisés et
éclairants. Belle fin de journée à vous deux,
--
Dominique
Esto quod es
[toc] | [prev] | [next] | [standalone]
| From | yves <yves@free.fr.invalid> |
|---|---|
| Date | 2026-06-25 20:19 +0200 |
| Message-ID | <871pdu5vq9.fsf@free.fr.invalid> |
| In reply to | #4341 |
Dominique <dominique.sextant@orange.fr.invalid> writes:
>>
>>> J'ai écrit, à titre professionnel, un script Python assez simple qui se
>>> contente de modifier deux fichiers csv.
>> Sans répondre directement à la question, est-ce que tu peux avoir un
>> contrôle sur ces deux fichiers csv, sur la façon dont ils sont produits ?
>> Ou une possibilité de feedback ?
>> Ou pas du tout ?
> En fait, j'ai utilisé bêtement, en ligne de commande, file -i
> /mon/fichier.csv
> Avec l'encodage ainsi trouvé je l'ouvre sans problème. Je décide
> moi-même de l'encodage de sortie (pourquoi ai-je retenu ISO-8859-15 ?
> Je ne sais pas, mais comme tout fonctionne 😊)
>
> with open("/HOME/residents.csv", "r",encoding='ISO-8859-15') as res:
Je posais la question de l'origine des fichiers csv, car ce que j'ai
retenu de ce texte du début des années 2000 :
<https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/>
(il y avait une traduction française qui semble désormais introuvable)
c'est qu'il est impossible de deviner un encodage de façon 100 %
certaine, et donc qu'il est préférable que l'encodage soit annoncé.
Pour un fichier csv, c'est difficile, mais si ces fichiers sont produits
par un programme interne à l'entreprise (une base de donnée, par
exemple), il a peut-être moyen de garantir une sortie avec un encodage
spécifique, à la source, plutôt que de tenter un test dont la fiabilité
ne peut pas être absolue.
--
Yves
[toc] | [prev] | [next] | [standalone]
| From | Dominique <dominique.sextant@orange.fr.invalid> |
|---|---|
| Date | 2026-06-26 03:11 +0200 |
| Message-ID | <111kjj6$6iat$1@dont-email.me> |
| In reply to | #4342 |
Le 25/06/2026 à 20:19, yves a écrit : > Pour un fichier csv, c'est difficile, mais si ces fichiers sont produits > par un programme interne à l'entreprise (une base de donnée, par > exemple), il a peut-être moyen de garantir une sortie avec un encodage > spécifique, à la source, plutôt que de tenter un test dont la fiabilité > ne peut pas être absolue. > Je partage totalement ton analyse, et je milite pour que l'éditeur d'un logiciel que nous utilisons à titre professionnel modifie ses scripts afin de ne sortir que des extractions csv en utf-8. J'ai connu cette situation à la DGFIP avec des extractions soit en ISO-8859-15 soit en utf-8. Il a suffi de très peu de temps pour que toutes les extractions soient en utf-8. À mon niveau et avec LibreOffice ou Python, je déclare toujours l'encodage avant d'écrire mon fichier csv sur disque. Belle journée, -- Dominique Esto quod es
[toc] | [prev] | [standalone]
Back to top | Article view | fr.comp.lang.python
csiph-web