这是我的代码,

for line in open('u.item'):
# Read each line

每当我运行这段代码,它给出以下错误:

UnicodeDecodeError: 'utf-8' codec无法解码字节0xe9在位置2892:无效的延续字节

我试图解决这个问题,并在open()中添加了一个额外的参数。代码如下:

for line in open('u.item', encoding='utf-8'):
# Read each line

但是它又给出了同样的错误。那我该怎么办呢?


当前回答

使用这个,如果你直接从github或kaggle加载数据DF=pd.read_csv(文件,编码='ISO-8859-1')

其他回答

为了让网页在类似问题(关于UTF-8错误)的google请求中搜索得更快,我把我的解决方法留给其他人。

我有问题。csv文件打开的描述:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 150: invalid continuation byte

我用记事本打开文件,数了数第150位:那是一个西里尔字母的符号。 我用“另存为”重新保存了那个文件。'命令与编码'UTF-8'和我的程序开始工作。

试着用Pandas来阅读:

pd.read_csv('u.item', sep='|', names=m_cols, encoding='latin-1')

编码替换为encoding='ISO-8859-1'

For line in open('u。项”,编码= ' iso - 8859 - 1”):

print (line)

如果你使用的是python2,下面是解决方案:

import io
for line in io.open("u.item", encoding="ISO-8859-1"):
    # Do something

因为encoding参数对open()不起作用,你将得到以下错误:

'encoding'是此函数的无效关键字参数

下面的方法对我也有用。ISO 8859-1将节省很多,主要是如果使用语音识别api。

例子:

file = open('../Resources/' + filename, 'r', encoding="ISO-8859-1")