3

可能重复:
自动以正确的编码打开文件

我的代码:

import csv

def handle_uploaded_file(f):
  dataReader = csv.reader(f, delimiter=';', quotechar='"')

for row in dataReader:
  do_sth

问题是它只有在 csv 是 UTF-8 编码的情况下才能正常工作。我应该改变什么来提供 iso-8859-2 或 windows-1250 编码?(最好的解决方案是自动识别编码,但也可以手动转换)

4

3 回答 3

5

目前的解决方案:

def reencode(file):
    for line in file:
        yield line.decode('windows-1250').encode('utf-8')

csv_reader = csv.reader(reencode(open(filepath)), delimiter=";",quotechar='"')
于 2012-05-19T13:53:22.367 回答
3

查看csv 模块文档的示例部分。最后,您将找到可以用于该目的的类,并指定编码。

于 2012-05-17T20:53:29.230 回答
1

传递使用codecs.open打开的文件描述符。你不能自动识别编码,或者不是很好。要猜测编码,您可以使用chardet

于 2012-05-17T20:52:59.450 回答