您的位置:首页 > 编程语言 > Python开发

Python点滴02_Python3打开中文文本时报错的一种处理方法

2016-01-05 19:09 591 查看
在Python3中,使用open函数打开一个纯中文的txt文件时,提示有错误,报错信息如下:

UnicodeDecodeError: 'gbk' codec can't decode byte 0xfe in position 1724: illegal multibyte sequence

用Notepad++打开对应文件,找到对应位置,未发现特殊字符,也没有什么异常情况出现。

个人怀疑是有一些特殊字符无法被正确解释(怀疑是全角、半角啊之类比较细微的问题),于是尝试在open中加入encoding='UTF-8'参数,依然报错:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 0: invalid start byte

看来错的更离谱了,似乎一开始就读不了。

于是尝试新方法,既然读入的文件都是字节流,何不现以二进制读入,然后输出时再解码?于是在open中选择二进制模式(rb),然后用如下语句:

for line in f.readlines():

print (line.decode('gbk'))

这样就可以输出一些字符了!但是读不到文件结尾又中断了。(但是!毕竟可以输出部分文字了!)

在报错位置仔细核对,没有发现什么问题。已输出的部分都正常,是在找不到中断的原因。无奈之下,在open函数中加入errors="ignore"参数,竟然成功读到文末:

with open('qtsFull.txt',encoding='gbk',errors="ignore") as f:

仔细核对了一下原文件和输出文件,发现输出的内容(至少是中文字符部分)并无差异。尽管不知道具体在读入和输出时忽略了哪些错误,但基本功能是实现了(无中断的全文读入),我也就把这个当作一种解决方案吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: