Maison  >  Article  >  développement back-end  >  Comment lire des fichiers CSV UTF8 avec des caractères accentués en Python ?

Comment lire des fichiers CSV UTF8 avec des caractères accentués en Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-02 21:57:30179parcourir

How to Read UTF8 CSV Files with Accented Characters in Python?

Lecture d'un fichier CSV UTF8 avec Python

La lecture de fichiers CSV contenant des caractères accentués peut être difficile en Python en raison de sa prise en charge ASCII limitée. Cet article explore une solution à ce problème, en traitant de l'"UnicodeDecodeError" rencontré lors de la tentative de lecture de tels fichiers.

Lecteur CSV compatible Unicode

Pour gérer les caractères accentués, nous avons besoin d'un lecteur CSV qui prend en charge le codage Unicode. Le code suivant modifie le lecteur CSV standard :

<code class="python">def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs):
    # Decode UTF-8 data into Unicode strings
    csv_reader = csv.reader(unicode_csv_data, dialect=dialect, **kwargs)
    for row in csv_reader:
        yield [unicode(cell, 'utf-8') for cell in row]</code>

Encodeur UTF-8

La solution originale a appliqué de manière incorrecte l'encodage à une chaîne d'octets au lieu d'une chaîne Unicode. Le code ci-dessous corrige cette erreur :

<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]</code>

Exemple d'utilisation

Nous pouvons désormais lire en toute confiance les fichiers CSV codés en UTF8 comme suit :

<code class="python">filename = 'output.csv'
reader = unicode_csv_reader(open(filename))

# Iterate through the rows, fields
for field1, field2, field3 in reader:
    print field1, field2, field3 </code>

Remarque sur les données d'entrée Encodage

N'oubliez pas que la solution fournie suppose que les données d'entrée sont déjà en codage UTF8. Si ce n'est pas le cas, vous pouvez utiliser la méthode decode pour le convertir en UTF8 avant de le transmettre au lecteur CSV.

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!

Déclaration:
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