UnicodeDecodeError [Python]的原因和解决方法
当我尝试使用pandas读取csv文件格式的数据集时,我立即遇到错误“ UnicodeDecodeError:'utf-8'编解码器无法解码位置0的字节91x1:无效的起始字节”。
错误内容
使用pd.read_csv读取csv文件。然后 ...
将熊猫作为pd df = pd.read_csv('data.csv')导入
>> Unicode解码错误:'utf-8'编解码器无法解码位置0的字节91x1:无效的起始字节
我收到Unicode解码(将字符代码转换为字符)错误。
顺便说一下,将字符转换为字符代码称为编码。
原因
在个人计算机内部,不能原样识别字符,而是将其视为预先分配给每个字符的数字(字符代码)。
字符代码有多种类型,具体取决于语言和分配数字的方式。 UTF-8是将Unicode设置为世界标准的统一标准的一种编码方法,因此可以在任何语言中使用。
但是,UTF-8似乎也不完美(维基百科:日文环境中的Unicode问题)
我不知道引起此问题的字符,但是由于csv文件包含日语字符,日语字符代码和UTF-8之间的转换不当会导致Unicode解码错误。
解决策
使用read_csv()进行读取时,请指定从参数到日语字符代码(shift_jis等)的编码格式。
df = pd.read_csv(“ data.csv”,编码=“ shift_jis”)
我能够成功阅读它。
其他日语兼容的编码格式
顺便说一句,有多种可以表达日语的字符代码,Python将以下代码作为标准实现。 (参考:Python标准编码列表 )
- cp932
- euc_jp,euc_jis_2004,euc_jisx0213
- iso2022_jp,iso2022_jp_1,iso2022_jp_2,iso2022_jp_3
- iso2022_jp_2004,iso2022_jp_2ext
- shift_jis,shift_jis _2004,shift_jisx0213
但是,似乎可以使用shift_jis或cp932很好地读取它,这是一个主要措施。
讨论
评论清单
cp949是韩文,不是吗?
请使用cp932。
引用
cp932 | 932,ms932,mskanji,ms-kanji |日语
cp949 | 949,ms949,uhc |韩文
感谢您的建议。似乎参考列被错误地描述为cp949。我已经改正了。
挫伤!解决了!
很有帮助