这是我的代码,
for line in open('u.item'):
#read each line
每当我运行此代码时,它会给出以下错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte
我试图解决这个问题并在open()中添加一个额外的参数,代码看起来像;
for line in open('u.item', encoding='utf-8'):
#read each line
但它再次给出了同样的错误 . 那我该怎么办!请帮忙 .
7 回答
正如Mark Ransom所说,我找到了解决该问题的正确编码 . 编码为"ISO-8859-1",因此用
open('u.item', encoding = "ISO-8859-1")
替换open("u.item", encoding="utf-8")
将解决问题 .您的文件实际上不包含utf-8编码数据,它包含一些其他编码 . 找出编码是什么,并在
open
调用中使用它 .例如,在Windows-1252编码中,
0xe9
将是字符é
.也适合我,ISO 8859-1将节省很多,哈哈哈,主要是如果使用语音识别API
例:
尝试使用pandas阅读
如果您正在使用
Python 2
,则以下解决方案:因为
encoding
参数不适用于open()
,您将收到以下错误:如果有人在寻找这些,这是在Python 3中转换CSV文件的示例:
Sometimes
open(filepath)
,其中filepath
实际上不是文件会得到相同的错误,所以首先要确保您尝试打开的文件存在:希望这会有所帮助 .