Maison > développement back-end > Tutoriel Python > 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
Libérer: 2024-11-02 21:57:30
original
283 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

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