UnicodeDecodeError:'utf-8'编解码器无法解码字节
这是我的代码,
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
但是它也会给出同样的错误。 那么我该怎么做! 请帮忙。
正如Mark Ransom所build议的,我发现了这个问题的正确编码。 编码是“ISO-8859-1”,所以用open("u.item", encoding="utf-8")
open('u.item', encoding = "ISO-8859-1")
replaceopen("u.item", encoding="utf-8")
open('u.item', encoding = "ISO-8859-1")
将解决问题。
你的文件实际上并不包含utf-8编码的数据,它包含了一些其他的编码。 找出那个编码是什么,并在open
电话中使用它。
例如在Windows-1252编码中, 0xe9
就是字符é
。
尝试使用pandas阅读
pd.read_csv('u.item', sep='|', names=m_cols , encoding='latin-1')
如果你使用的是Python 2
,那么解决scheme如下:
import io for line in io.open("u.item", encoding="ISO-8859-1"): # do something
由于encoding
参数不能与open()
,您将会收到以下错误:
TypeError:'encoding'是这个函数的一个无效的关键字参数
如果有人正在寻找这些,这是一个在Python 3中转换CSV文件的例子:
try: inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"') except IOError: pass
也为我工作,ISO 8859-1将节省很多,哈哈,主要是如果使用语音识别API的
例:
file = open('../Resources/' + filename, 'r', encoding="ISO-8859-1");