具有不同编码的csv

Tom*_*ina 2 python csv encoding

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

我的代码:

import csv

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

for row in dataReader:
  do_sth
Run Code Online (Sandbox Code Playgroud)

问题是,仅当csv是UTF-8编码时,它才能很好地工作。服务iso-8859-2或Windows-1250编码应更改什么?(最好的解决方案是自动识别编码,但也可以手动转换)

Tom*_*ina 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='"')
Run Code Online (Sandbox Code Playgroud)

  • 我能够使用 `open(filename, 'r', encoding='latin-1') as f:` 打开文件,它修复了我遇到的编码错误。可以在此处找到标准的编码列表:https://docs.python.org/3/library/codecs.html#standard-encodings (3认同)
  • 这不是正确答案,csv 文档:由于 open() 用于打开 CSV 文件进行读取,因此默认情况下该文件将使用系统默认编码解码为 un​​icode(请参阅 locale.getpreferredencoding())。要使用不同的编码解码文件,请使用 open 的 encoding 参数: (2认同)