【问题标题】:pandas read_csv encoding weird characterpandas read_csv 编码奇怪的字符
【发布时间】:2015-04-03 16:26:04
【问题描述】:

我尝试使用 pandas 以文本文件格式读取我的数据集。但是,某些字符的编码不正确。我有 ???为撇号。

我应该怎么做才能正确编码我的文件?我试过了

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

  • encoding = "latin1" 但这给了我很多???

  • encoding = "ISO-8859-1" or "ISO-8859-2" 但这也给了我就像没有编码一样...

当我在 sublime 中打开我的数据时,我得到了这个角色。

更新:但是当我使用 loc 访问条目时,我得到了类似 \u0102\u02d8\xe2\x82\u0179\xc2\u015, \u0102\u02d8\xe2\x82\u0179\xe2\x84\u02d8 的内容

【问题讨论】:

  • 你需要知道文件的实际编码是什么。你从哪里得到的文件?
  • 您尝试过 ISO-8859-2 吗?
  • @AndyHayden 是的,我做到了

标签: python csv encoding utf-8 pandas


【解决方案1】:

您可以通过chardetdetermine the encoding

$ pip install chardet

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

基本用法还建议您如何使用它来推断大文件的编码,例如文件太大而无法读入内存 - 它会读取文件直到它对编码有足够的信心。


根据this answer,你应该试试encoding="ISO-8859-2"

我的猜测是您的输入被编码为 ISO-8859-2,其中包含 Ă 作为0xC3


注意:Sublime 也可能无法正确推断编码,因此您必须对其输出稍加注意,最好与您的供应商(无论您从哪里获取文件)核实实际编码是什么是……

【讨论】:

  • @user3362840 请尝试 chardet :)
猜你喜欢
  • 1970-01-01
  • 2022-01-14
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多