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没有定义 展开
对了,我在网上看到有人用reload(sys)但是我的python 3.4没法用,说是reload没有定义 展开
2个回答
展开全部
你用的是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,那么这些问题不存在。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询