Python 读取csv时,csv.DictReader使用哪种编码?
我有一个保存为UTF-8编码的csv文件 它包含非ascii字符[umlauts] 我正在使用以下命令读取文件:Python 读取csv时,csv.DictReader使用哪种编码?,python,python-2.7,csv,encoding,utf-8,Python,Python 2.7,Csv,Encoding,Utf 8,我有一个保存为UTF-8编码的csv文件 它包含非ascii字符[umlauts] 我正在使用以下命令读取文件: csv.DictReader(<file>,delimiter=<delimiter>). 有没有更好的方法,然后以一种编码读取文件,然后转换为另一种编码,即utf-8 [Python版本:2.7]如何使用实例和类来实现这一点 您可以在类级别存储共享字典,也可以让它加载Unicode文本文件,甚至检测它们的编码,使用或不使用BOM表文件掩码 很久以前,我编写
csv.DictReader(<file>,delimiter=<delimiter>).
有没有更好的方法,然后以一种编码读取文件,然后转换为另一种编码,即utf-8
[Python版本:2.7]如何使用实例和类来实现这一点 您可以在类级别存储共享字典,也可以让它加载Unicode文本文件,甚至检测它们的编码,使用或不使用BOM表文件掩码 很久以前,我编写了一个简单的库,它用一个支持Unicode的库覆盖默认的
open()
如果您这样做,您将能够更改csv库加载文件的方式
如果您的文件没有BOM表标题,库将采用UTF-8而不是旧的
ascii
。如果需要,您甚至可以指定另一种回退编码。在Python 2.7中,CSV模块不应用任何解码-它以二进制模式打开文件并返回字节字符串
使用,它可以动态解码
像这样使用它:
with open("myfile.csv", 'rb') as my_file:
r = unicodecsv.DictReader(my_file, encoding='utf-8')
r
将包含一个UNICODE指令。源文件以二进制
模式打开非常重要。这个答案解决了我的问题:
with open("myfile.csv", 'rb') as my_file:
r = unicodecsv.DictReader(my_file, encoding='utf-8')