matlab PandasRead_CSV在特定行上失败,返回UnicodeDecodeError:‘utf-8’编解码器

ma8fv8wu  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(106)

Pandas Read_CSV()在某些特定行上返回UnicodeDecodeError。如果我使用nrows=n1,它可以正常工作,没有任何错误。但当我使用nrows=n2 (>n1)时,它以某种方式返回UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 12: invalid start byte
它以前工作得很好,但在某种程度上它让我不断地返回错误。有时,当我重新启动计算机时,它会再次工作,但只在我第一次尝试调用它时才起作用。
已尝试使用和不使用编码选项的READ_CSV。还尝试了ERROR_BAD_LINES=FALSE。
这快把我逼疯了。有什么主意吗?如果这与系统问题有关,至少我想知道如何获得问题行的行号。
(我使用指定为etf-8的编码从matlab中导出表(还尝试了CP949,这是我的系统的默认编码)。从SAS导入成功。)

ru9i0ody

ru9i0ody1#

使用pandas.read_csv时,可以传递各种参数。其中之一是encoding,它将允许字符翻译。如果您想了解更多关于编码的知识,this可能是一个很好的起点。
因为有很多编码,并且无法访问OP的数据,所以您可能想看看这个页面,在这里您可以找到Python标准编码。
然后,假设文件名为data.csv,则必须按如下方式使用

import pandas as pd

pd.read_csv('data.csv', encoding='iso-8859-1')  # iso-8859-1 is for Western Europe

同样,编码列表很多,所以我建议OP根据OP的用例进行调整。
pandas版本1.3.0开始,添加了参数encoding_errors(see this PR)。这会影响编码错误的处理方式。请在此处查看可能值的列表。
如果想要replace,考虑到上面使用的编码,那么以下代码应该可以完成工作

import pandas as pd

pd.read_csv('data.csv', encoding='iso-8859-1', encoding_errors='replace')

相关问题