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

Mary-Kate Olsen
发布: 2024-11-02 14:10:30
原创
431 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!