问题:“ for line in…”导致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
但是,它再次给出相同的错误。那我该怎么办!请帮忙。
回答 0
正如Mark Ransom所建议的,我找到了解决该问题的正确编码。编码为“ ISO-8859-1”,因此替换open("u.item", encoding="utf-8")
为open('u.item', encoding = "ISO-8859-1")
可以解决该问题。
回答 1
同样对我有用,ISO 8859-1将节省很多,哈哈哈,主要是如果使用语音识别API的话
例:
file = open('../Resources/' + filename, 'r', encoding="ISO-8859-1");
回答 2
您的文件实际上并不包含utf-8编码的数据,而是包含其他一些编码。弄清楚编码是什么,并在open
调用中使用它。
例如,在Windows-1252编码中,0xe9
字符为é
。
回答 3
尝试使用熊猫阅读
pd.read_csv('u.item', sep='|', names=m_cols , encoding='latin-1')
回答 4
如果使用Python 2
以下将解决方案:
import io
for line in io.open("u.item", encoding="ISO-8859-1"):
# do something
由于encoding
parameter不适用于open()
,因此您将收到以下错误:
TypeError:“ encoding”是此函数的无效关键字参数
回答 5
回答 6
这有效:
open('filename', encoding='latin-1')
要么:
open('filename',encoding="IS0-8859-1")
回答 7
如果有人在寻找这些,这是在Python 3中转换CSV文件的示例:
try:
inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
pass
回答 8
有时,当open(filepath)
在其中filepath
实际上不是一个文件会得到同样的错误,所以,首先要确保你试图打开的文件存在:
import os
assert os.path.isfile(filepath)
希望这会有所帮助。
回答 9
您可以这样尝试:
open('u.item', encoding='utf8', errors='ignore')
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。