最近在学习python文件操作时用到split()方法,用来得到文件单词数量,因此下载了《爱丽丝梦游仙境》的英文版文本文档,但是在操作的过程中出现了这个报错:
UnicodeDecodeError: 'gbk' codec can't decode byte 0x9d in position 1596: illegal multibyte sequence
GBK编解码器无法解码,非法的多字节序列。
代码如下:
filename = '11-0.txt'
with open(filename) as file_object:
content = file_object.read()
words = content.split()
num = len(words)
print(num)
到这里结合之前学习HTML的经验,我明白应该是编码问题,我的文档使用的是UTF-8编码方式,但是我的编辑器默认的是GBK,导致文档内容无法解码所以读入失败。
在网上查找之后发现了两种方法
方法一:
with open(filename,'rb') as file_object:
后面加的‘rb’代表该文件以二进制打开,UTF-8的编码形式本质上就是二进制编码,因此成功打开。
方法二:
with open(filename,encoding='UTF-8') as file_object:
这种方法相对上一种更为通用,直接在打开文件的时候规定编码格式为UTF-8,如果以后遇到其他编码类型的文件只要将encoding后面的编码格式更换就可以成功。
(随着认识加深,本篇博文会不断更新)