python读取txt文档的时候遇到decode错误如何解决?

fi= open('somefile.txt', 'r') sL = fi.readlines(), 报错说是 readlines()这一行不对,因为UnicodeDecodeError: 'gbk' codec can't decode byte 0x94 in position 41: illegal multibyte sequence,我的txt文档是一个英文字符,但是存在" —"这样的字符,请问大家怎么可以读入呢,这是我的作业,谢谢
对了,我在网上看到有人用reload(sys)但是我的python 3.4没法用,说是reload没有定义

你用的是python3才会出这个问题。 python3在readlines里,缺省会使用操作系统当前的编码来解析文件,比如windows下就用GBK,在linux下则根据当前language来设置解析办法。


解决的办法是在open()里加上参数


fi= open('somefile.txt', 'r')

改成

fi= open('somefile.txt', 'rt',encoding="utf-8")

这个encoding就是指定编码格式。 如果encoding="utf-8"不行,你就改成encoding="gb18030",如果还不成,就改成encoding="big-5"。如果还不成。只能手工将" —"
替换成负号。

追问

弄好了,你说的方法确实可以做到。但是我在英语国家上课,老师是美国人给的肯定不是gbk编码的文件……作业要统一test,我这么写肯定不好吧,是不是改回去到python 2.7比较好?

追答

python2应该比较的通用。大部分人还在用python2.x, python3.x因为特别所以目前只是个别项目在用。 如果你用python2.7,那么这些问题不存在。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-02
sL = fi.readlines().decode('utf-8')追答

sL = fi.readlines().decode('gbk')试试

追问

还是不行的…readlines()入读的是list结构而且没有decode这个方法啊……

相似回答