Bonjour Christophe et tous,
Désolé Christophe pour le doublon, il est sans doute préférable que
j'écrive ici au cas où je raconte de grosses bêtises. :)
Réponse rapide, que l'on pourra amender, en particulier si j'emploie une
terminologie que d'aucuns trouveront peut-être approximative.
Par rapport à ce que tu indiques, il semblerait qu'il suffirait de
forcer l'encoedage à l'ouverture du fichier. Ton programme marche bien
avec une version 2, il est très vraisemblable que ton fichier soit
encodé en texte ANSI / Windows-1252 / CP1252 / Latin1, au choix de la
dénomination. Ce genre de fichier où un caractère n'occupe qu'un seul
octet dans tous les cas.
En Python 3, lorsque tu ouvres unfichier, il est par défaut considéré
comme de l'UTF-8. Où certains caractères , dont le code est supérieur à
127, peuvent occuper 2, et jusqu'à 4 octets, si ce n'est 6.
Et donc, sur des caractères genre accents, ça coince...
Quelque chose du genre:
f = open("ton fichier", "r", encoding="iso-8859-1") pourrait suffire à
faire l'affaire.
Pour le nom exact de l'encodage, il faudrait retrouver le coin d'aide
qui y fait référence, peut-être en partant de l'aide sur l'objet file...
J.-F.
Le 14/04/2020 à 12:15, Delaunay Christophe a écrit :
Bonjour tous,
Voilà, j’ai un programme en Python qui doit parcourir un fichier censé
être un fichier texte mais qui a l’air de contenir des caractères embêtants.
Enfin, en Python 2.7.16, ça s’ouvre bien mais pas en Python 3.7.3. Je
vais sûrement trouver mais en attendant, je reçois cette erreur :
'utf-8' codec can't decode byte 0xc9 in position 1675: invalid
continuation byte
Ma question est la suivante:
Y a-t-il une commande simple pour lire la ligne qui contient le énième
caractère d’un fichier, ici par exemple le 1675^ème caractère ? Ou alors
va-t-il falloir que je me fasse un bout de code juste pour ça ?
Ou alors, les spécialistes de Python savent-ils pourquoi mon programme
tourne nickel en Python 2 et pas en Python 3 ?
Merci infiniment. Bonne journée. @+ ChD
--
CBLX - CarrefourBLinuX MailingListe
Pour obtenir de l'aide, envoyez le sujet help à:
carrefourblinux-requ...@lists.tuxfamily.org
Archives:
http://listengine.tuxfamily.org/lists.tuxfamily.org/carrefourblinux
ou
http://www.mail-archive.com/carrefourblinux@lists.tuxfamily.org/