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

fi=open('somefile.txt','r')sL=fi.readlines(),报错说是readlines()这一行不对,因为UnicodeDecodeErro... 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没有定义
展开
 我来答
bdwisyou7d
推荐于2017-09-25 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3774
采纳率:81%
帮助的人:1073万
展开全部

你用的是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,那么这些问题不存在。
Lovesoo
2014-09-02 · TA获得超过2385个赞
知道小有建树答主
回答量:654
采纳率:66%
帮助的人:411万
展开全部
sL = fi.readlines().decode('utf-8')
追答
sL = fi.readlines().decode('gbk')试试
追问
还是不行的…readlines()入读的是list结构而且没有decode这个方法啊……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式