这是我的代码,

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

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


当前回答

有时当使用open(filepath),其中filepath实际上不是一个文件时,会得到相同的错误,所以首先要确保你要打开的文件存在:

import os
assert os.path.isfile(filepath)

其他回答

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

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

print (line)

这是一个在Python 3中转换CSV文件的例子:

try:
    inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
    pass

“utf-8”编解码器无法解码位置7044中的0xed字节:无效的延续字节

上述错误是由于编码造成的

解决方案:-使用" encoding='latin-1' "

参考:https://pandas.pydata.org/docs/search.html?q=encoding

在我的情况下,这个问题发生,因为我修改了一个excel文件(.xlsx)的扩展名直接到(.csv)文件直接…

解决方案是打开文件,然后将其保存为新的(.csv)文件(即file -> save as ->选择(.csv)扩展名并保存它。这对我很管用。

用notepad++打开文件,选择“编码”或“编码”菜单来识别或从ANSI转换为UTF-8或ISO 8859-1代码页。