Maison > Article > développement back-end > Comment lire des fichiers CSV UTF8 avec des caractères accentués en 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.
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>
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>
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>
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!