csv具有不同的编码

时间:2012-05-17 20:37:38

标签: python encoding csv

  

可能重复:
  Open a file in the proper encoding automatically

我的代码:

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编码? (最好的解决方案是自动识别编码,但手动转换也是可以接受的)

3 个答案:

答案 0 :(得分:4)

现在的解决方案:

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

csv_reader = csv.reader(reencode(open(filepath)), delimiter=";",quotechar='"')

答案 1 :(得分:2)

看看the examples section of the csv module documentation。最后,您将找到可用于此目的的类,并指定编码。

答案 2 :(得分:1)

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