这是我的代码,

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

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


当前回答

我一直遇到这个错误,通常解决方案不是通过encoding='utf-8'解决的,而是实际上使用engine='python',就像这样:

import pandas as pd

file = "c:\\path\\to_my\\file.csv"
df = pd.read_csv(file, engine='python')
df

文档的链接在这里:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html

其他回答

如此:

open('filename', encoding='latin-1')

Or:

open('filename', encoding="ISO-8859-1")

你可以试试这种方法:

open('u.item', encoding='utf8', errors='ignore')

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

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

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

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

这是一个在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