Python:UnicodeDecodeError:'utf-8'编解码器无法解码位置35中的字节0x96:无效的起始字节

use*_*568 8 python csv pandas

我是Python的新手,我正在尝试使用下面的脚本读取csv文件.

Past=pd.read_csv("C:/Users/Admin/Desktop/Python/Past.csv",encoding='utf-8')
Run Code Online (Sandbox Code Playgroud)

但是,得到错误"UnicodeDecodeError:'utf-8'编解码器无法解码位置35中的字节0x96:无效的起始字节",请帮我解决这里的问题,我在脚本中使用编码认为它会解决错误.

Lia*_*iam 15

这是因为您选择了错误的编码.

如果你在Windows上只是更换

Past=pd.read_csv("C:/Users/Admin/Desktop/Python/Past.csv",encoding='utf-8') 
Run Code Online (Sandbox Code Playgroud)

Past=pd.read_csv("C:/Users/Admin/Desktop/Python/Past.csv",encoding='cp1252')
Run Code Online (Sandbox Code Playgroud)

应该解决问题.

  • 您如何确定“cp1252”是正确的编码?很可能不是,但你很幸运,因为它不再抛出错误,但现在你的数据中有不正确的字符。 (6认同)
  • 确定编码的方法是使用 chardet 库。在出现此错误的文件上使用它给了我“Windows-1252”作为编码,这是“cp1252”的同义词(https://docs.python.org/3.8/library/codecs.html#standard-encodings) 。请参阅 /sf/answers/4271771031/ 了解如何执行此操作 (4认同)

小智 14

尝试使用:

pd.read_csv("Your filename", encoding="ISO-8859-1")
Run Code Online (Sandbox Code Playgroud)

我从某个网站解析的代码被转换为这种编码,而不是标准的默认 UTF-8 编码。


Nit*_*Pal 9

使用此解决方案,它将剥离(忽略)字符并返回没有它们的字符串.只有在您需要剥离它们而不是转换它们时才使用它.

with open(path, encoding="utf8", errors='ignore') as f:
Run Code Online (Sandbox Code Playgroud)

使用errors='ignore'你只会丢失一些角色.但是如果你不关心它们,因为它们似乎是源于连接到我的套接字服务器的客户端的错误格式化和编程的额外字符.然后它是一个简单的直接解决方 参考


Kum*_*abh 7

这是一个老问题,但在寻找此错误的解决方案时出现。所以我想为所有仍然偶然发现这个话题的人做出回答。在传递编码参数的正确值之前,可以检查文件的编码。要获取编码,Windows 中的一个简单选项是在 Notepad++ 中打开文件并查看编码。然后可以在python 文档中找到编码参数的正确值。查看此问题和 stackoverflow 上的答案,了解有关获取文件编码的不同可能性的更多详细信息。


Jas*_*oal 5

以下对我来说非常有效:

encoding = 'latin1'
Run Code Online (Sandbox Code Playgroud)

  • 是的,“latin1”消除了所有错误,因为每个可能的字节都映射到有效字符。但这并不意味着字符是正确的。 (2认同)

小智 5

df = pd.read_csv( "/content/data.csv",encoding='latin1')
Run Code Online (Sandbox Code Playgroud)

只需添加 ,encoding='latin1' 即可工作