UnicodeDecodeError: 'utf-8' 编解码器无法解码位置 886 中的字节 0xa3:无效的起始字节:jsonlines

问题描述

我正在尝试从 jsonl 文件中读取行,但出现以下错误

回溯(最近一次调用最后一次):文件“insertion_script.py”,行 12、在 对于 f.iter() 中的行:文件“C:\Users\Administrator\Anaconda3\lib\site-packages\jsonlines\jsonlines.py”, 第 204 行,在迭代中 skip_empty=skip_empty) 文件 "C:\Users\Administrator\Anaconda3\lib\site-packages\jsonlines\jsonlines.py",第 143 行,已读 lineno,line = next(self._line_iter) File "C:\Users\Administrator\Anaconda3\lib\codecs.py",line 322,in decode (结果,消耗)= self._buffer_decode(数据,self.errors,final) UnicodeDecodeError: 'utf-8' 编解码器无法解码字节 0xa3 的位置 886: 无效的起始字节

BH_data = []
with jsonlines.open('2401659.jsonl','r') as f:
    for line in f.iter():
        BH_data.append(line)

解决方法

这意味着您的数据实际上不是 UTF-8。 0xA3 恰好是 Windows 代码页中的英镑符号。你应该试试

import codecs
with codecs.open('2401659.jsonl','r',encoding='cp1252') as jfile:
    with jsonlines.Reader(jfile) as f: