繁体   English   中英

UnicodeDecodeError:“utf-8”编解码器无法解码 position 35 中的字节 0x96:无效的起始字节

[英]UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 35: invalid start byte

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

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

但是,出现错误“UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 35: invalid start byte”,请帮助我了解这里的问题,我在脚本中使用了编码认为它会解决错误。

发生这种情况是因为您选择了错误的编码。

由于您正在使用 Windows 机器,只需更换

Past=pd.read_csv("C:/Users/.../Past.csv",encoding='utf-8') 

Past=pd.read_csv("C:/Users/.../Past.csv",encoding='cp1252')

应该解决问题。

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

with open(path, encoding="utf8", errors='ignore') as f:

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

尝试使用:

pd.read_csv("Your filename", encoding="ISO-8859-1")

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

以下对我来说非常有效:

encoding = 'latin1'

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

使用下面的代码对我有用:

with open(keeniz_dir + '/world_cities.csv',  'r', encoding='latin1') as input:

除非您确定文件编码,否则不要传递编码选项。 默认值 encoding=None 将 errors="replace" 传递给调用的 open() 函数。 编码错误的字符将被替换,然后您可以找出正确的编码或仅使用生成的 Dataframe。 如果提供了错误的编码,pd 会将 errors="strict" 传递给 open() 并在编码不正确时获取 ValueError。

df = pd.read_csv( "/content/data.csv",encoding='latin1')

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM