Maison > développement back-end > Tutoriel Python > Comment gérer l'encodage UTF8 en Python lors de la lecture de fichiers CSV ?

Comment gérer l'encodage UTF8 en Python lors de la lecture de fichiers CSV ?

Mary-Kate Olsen
Libérer: 2024-11-02 14:10:30
original
507 Les gens l'ont consulté

How to Handle UTF8 Encoding in Python When Reading CSV Files?

Lecture d'un fichier CSV UTF8 avec Python

Les fichiers CSV, couramment utilisés pour l'échange de données, contiennent souvent des caractères accentués qui nécessitent un encodage UTF8 pour préserver leur intégrité. Le csvreader Python, cependant, ne prend en charge que les données ASCII.

Problème

Lors de la tentative de lecture d'un fichier CSV UTF8 avec des caractères français ou espagnols accentués, malgré l'utilisation de code pour gérer l'encodage UTF8, l'exception suivante a été rencontré :

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 68: ordinal not in range(128)
Copier après la connexion

Solution

La solution réside dans la compréhension du but de la méthode d'encodage. Il convertit les chaînes Unicode en chaînes d'octets, et non l'inverse. En utilisant correctement le module codecs et spécifiquement codecs.open pour gérer les fichiers texte UTF8, le code peut être simplifié :

<code class="python">import csv

def unicode_csv_reader(utf8_data, dialect=csv.excel, **kwargs):
    csv_reader = csv.reader(utf8_data, dialect=dialect, **kwargs)
    for row in csv_reader:
        yield [unicode(cell, 'utf-8') for cell in row]

filename = 'da.csv'
reader = unicode_csv_reader(open(filename))
for field1, field2, field3 in reader:
  print field1, field2, field3 </code>
Copier après la connexion

Remarque

Si les données d'entrée ne sont pas en UTF8, comme ISO-8859-1, le code nécessite un transcodage :

<code class="python">line.decode('whateverweirdcodec').encode('utf-8')</code>
Copier après la connexion

Cependant, cela est souvent inutile car csv peut gérer directement les chaînes d'octets codées ISO-8859-*.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal