使用哪个编码csv.DictReader读取csv时?

2024-10-04 07:27:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个csv文件保存为UTF-8编码。在

它包含非ascii字符[umlauts]。在

我正在使用以下方法读取文件:

csv.DictReader(<file>,delimiter=<delimiter>).

我的问题是:

  1. 正在读取的文件采用哪种编码方式?在
  2. 我注意到,为了将字符串称为utf-8,我需要执行以下操作:

    ^{pr2}$

    有没有比以一种编码方式读取文件然后转换成另一种编码方式(即utf-8)更好的方法吗?

[Python版本:2.7]


Tags: 文件csv方法字符串编码ascii字符utf
2条回答

如何使用实例和类来实现这一点?在

您可以在类级别存储共享字典,也可以让它加载Unicode文本文件,甚至检测它们的编码,无论是否使用BOM文件掩码。在

很久以前,我写了一个简单的库,它用一个支持Unicode的库覆盖默认的open()。在

如果您这样做^{},您也可以更改csv库加载文件的方式。在

如果您的文件没有BOM头,库将采用UTF-8,而不是旧的ascii。如果需要,甚至可以指定另一个回退编码。在

在Python2.7中,CSV模块不应用任何解码-它以二进制模式打开文件并返回字节字符串。在

使用https://github.com/jdunck/python-unicodecsv,它可以动态解码。在

使用方式如下:

with open("myfile.csv", 'rb') as my_file:    
    r = unicodecsv.DictReader(my_file, encoding='utf-8')

r将包含unicode的dict。源文件以binary模式打开非常重要。在

相关问题 更多 >