首页  >  文章  >  后端开发  >  读取 CSV 文件时如何在 Python 中处理 UTF8 编码?

读取 CSV 文件时如何在 Python 中处理 UTF8 编码?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-02 14:10:30431浏览

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

使用 Python 读取 UTF8 CSV 文件

CSV 文件通常用于数据交换,通常包含重音字符,需要 UTF8 编码才能保持其完整性。然而,Python csvreader 仅支持 ASCII 数据。

问题

尝试读取带有重音法语或西班牙语字符的 UTF8 CSV 文件时,尽管使用代码处理 UTF8 编码,但出现以下异常遇到:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 68: ordinal not in range(128)

解决方案

解决方案在于理解encode方法的用途。它将 Unicode 字符串转换为字节字符串,反之亦然。通过正确利用 codecs 模块,特别是 codecs.open 来处理 UTF8 文本文件,可以简化代码:

<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>

注意

如果输入数据不是 UTF8,例如ISO-8859-1,代码需要转码:

<code class="python">line.decode('whateverweirdcodec').encode('utf-8')</code>

但是,这通常是不必要的,因为 csv 可以直接处理 ISO-8859-* 编码的字节字符串。

以上是读取 CSV 文件时如何在 Python 中处理 UTF8 编码?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn