Suj*_*itS 179 python character-encoding python-3.x
这是我的代码,
for line in open('u.item'):
#read each line
Run Code Online (Sandbox Code Playgroud)
每当我运行此代码时,它会给出以下错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte
Run Code Online (Sandbox Code Playgroud)
我试图解决这个问题并在open()中添加一个额外的参数,代码看起来像;
for line in open('u.item', encoding='utf-8'):
#read each line
Run Code Online (Sandbox Code Playgroud)
但它再次给出了同样的错误.那我该怎么办!请帮忙.
Suj*_*itS 355
正如Mark Ransom所说,我找到了解决该问题的正确编码.编码是"ISO-8859-1",所以更换open("u.item", encoding="utf-8")与open('u.item', encoding = "ISO-8859-1")将解决这个问题.
Ryo*_*eto 44
也适合我,ISO 8859-1将节省很多,哈哈哈,主要是如果使用语音识别API
例:
file = open('../Resources/' + filename, 'r', encoding="ISO-8859-1");
Run Code Online (Sandbox Code Playgroud)
Mar*_*som 29
您的文件实际上不包含utf-8编码数据,它包含一些其他编码.找出编码是什么,并在open调用中使用它.
例如,在Windows-1252编码中,0xe9将是字符é.
Sha*_*ank 21
尝试使用pandas阅读
pd.read_csv('u.item', sep='|', names=m_cols , encoding='latin-1')
Run Code Online (Sandbox Code Playgroud)
小智 16
这有效:
open('filename', encoding='latin-1')
Run Code Online (Sandbox Code Playgroud)
或者:
open('filename', encoding="ISO-8859-1")
Run Code Online (Sandbox Code Playgroud)
Jer*_*ril 11
如果您使用Python 2以下将解决方案:
import io
for line in io.open("u.item", encoding="ISO-8859-1"):
# do something
Run Code Online (Sandbox Code Playgroud)
因为encoding参数不起作用open(),您将收到以下错误:
TypeError: 'encoding' is an invalid keyword argument for this function
我在阅读此数据集时使用从Kaggle下载的数据集,它引发了此错误:
UnicodeDecodeError:“utf-8”编解码器无法解码位置 183 中的字节 0xf1:无效的连续字节
这就是我修复它的方法。
import pandas as pd
pd.read_csv('top50.csv', encoding='ISO-8859-1')
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用以下方法解决问题:
for line in open(your_file_path, 'rb'):
Run Code Online (Sandbox Code Playgroud)
'rb'以二进制模式读取文件。在这里阅读更多。希望这会有所帮助!
你可以试试这个方法:
open('u.item', encoding='utf8', errors='ignore')
Run Code Online (Sandbox Code Playgroud)
基于Stackoverflow 上的另一个问题和本文之前的答案,我想添加一个帮助来找到正确的编码。
如果您的脚本在 Linux 操作系统上运行,您可以使用以下命令获取编码file:
file --mime-encoding <filename>
Run Code Online (Sandbox Code Playgroud)
这是一个可以为您完成此操作的 python 脚本:
file --mime-encoding <filename>
Run Code Online (Sandbox Code Playgroud)
小智 5
这是在 Python 3 中转换 CSV 文件的示例:
try:
inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
pass
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
418909 次 |
| 最近记录: |