读取txt文件 “UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x93

1年前 ⋅ 320 阅读

读取txt文件 遇到 “UnicodeDecodeError: 'gbk' codec can't decode byte 0x93 in position 125: illegal multibyte sequence 错误 看论文,实现论文里面代码的过程中,要求使用python的时候,我需要去读一个txt文件,这个txt文件很大,有989M。这个时候,我们如果直接使用电脑去打开文件,那么我们就会面临一个问题,什么问题呢?电脑卡顿,并且不一定能打开该文件,这个时候,我们需要使用工具来进行开发,python就是不二的选择.如上面陈述的那样,我遇到了问题,下面是我读取文件使用的代码:

........此处省略其他代码.........
lines = []
with open(args.f, 'r') as inf:
    lines = inf.readlines()
........此处省略其他代码.........

错误结果如下图:微信图片_20221108213154.png 在网上百度了下解决办法,其中一个说是直接将读取的二进制强制改为str类型,其代码如下:

lines = []
with open(args.f, 'r') as inf:
    for line in inf:
    	line = str(line)
        #进行其他操作

但是,我这里发现并不适合我的代码,分析了下错误提示,既然是不能将二进制的编码转换成'gbk',那么使用utf-8进行转换可以吗?接下来我们直接修改代码为:

........此处省略其他代码.........
lines = []
with open(args.f, 'r', enconding='utf-8') as inf:
    lines = inf.readlines()
........此处省略其他代码.........

执行成功,那么显然可以转换成utf-8。如果你是逐行读取的话,可以参考上面说到的强制转换为str的那段代码,或者将转化为str和改变编码同时使用。