pandas读取CSV时编码出现奇怪字符

3

我试图使用pandas读取文本文件格式中的数据集。然而,一些字符没有正确编码,撇号部分变成了???

我该如何对文件进行正确编码?我已经尝试了以下方法:

  • encoding = "utf8",但我得到了UnicodeDecodeError: 'utf8' codec can't decode byte 0xc3 in position 2044: unexpected end of data

  • encoding = "latin1",但这给了我很多问号。

  • encoding = "ISO-8859-1"或"ISO-8859-2",但这也像没有编码一样。

当我在sublime中打开我的数据时,我得到了字符’。

更新:但是,当我使用loc访问条目时,我得到了像\u0102\u02d8\xe2\x82\u0179\xc2\u015,\u0102\u02d8\xe2\x82\u0179\xe2\x84\u02d8这样的东西。


你需要知道文件实际上使用的编码方式。你从哪里获取这个文件的? - BrenBarn
你试过ISO-8859-2吗? - Andy Hayden
@AndyHayden 是的,我做了。 - user3362840
1个回答

2
您可以使用chardet确定编码
$ pip install chardet

>>> import urllib
>>> rawdata = urllib.urlopen('http://yahoo.co.jp/').read()
>>> import chardet
>>> chardet.detect(rawdata)
{'encoding': 'EUC-JP', 'confidence': 0.99}

基本用法还建议您如何使用此功能从大型文件中推断编码,例如文件太大而无法读入内存-它将读取文件,直到对编码有足够的信心。
根据此答案,你应该尝试使用encoding="ISO-8859-2"

我猜测你的输入采用了ISO-8859-2编码,其中Ă表示为0xC3


注意:Sublime 也可能无法正确推断编码,因此您需要对其输出持怀疑态度,最好与供应商(无论您从哪里获取文件)确认实际编码是什么...

@user3362840 请尝试使用 chardet :) - Andy Hayden

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