CSV文件不同编码问题

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


1
https://dev59.com/vEzSa4cB1Zd3GeqPkjvl - Zeugma
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='"')

2
这不是正确答案,CSV文档:由于open()用于打开CSV文件进行读取,因此该文件默认将使用系统默认编码(请参见locale.getpreferredencoding())解码为Unicode。要使用不同的编码解码文件,请使用open的encoding参数: - user2270655
3
我能够使用open(filename, 'r', encoding='latin-1')打开文件,并修复我遇到的编码错误。这里可以找到标准编码列表:https://docs.python.org/3/library/codecs.html#standard-encodings - Max Candocia

3

1

传递使用codecs.open打开的文件描述符。您无法自动识别编码,或者识别效果不佳。要猜测编码,可以使用chardet


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接