Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 读取csv时,csv.DictReader使用哪种编码?_Python_Python 2.7_Csv_Encoding_Utf 8 - Fatal编程技术网

Python 读取csv时,csv.DictReader使用哪种编码?

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表文件掩码 很久以前,我编写

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

它包含非ascii字符[umlauts]

我正在使用以下命令读取文件:

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