python:读取文件内容解码 编码错误 UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xab in position 2: illegal

一、错误1(代码如下):UnicodeDecodeError: 'gbk' codec can't decode byte 0xab in position 2: illegal multibyte sequence 

filepath=(r'C:/Users/Desktop/报文/报文.txt')
with open(filepath) as d:
        q=d.read()
        print(q)

原因分析:

a、windows系统下 文件编码不能正常解析,如修正文件编码保障程序正常运行则需忽略错误  with open(filepath,errors='ignore') as d  ,但此处理后不能正常解析的部分打印出来是乱码,并没有解决实际问题。

b、解决如上困惑方法之一就是修改文件的编码格式,与当前代码解析规则支持的编码一致,

c、解决如上困惑方法之二 是 指定解码规则,指定open()的属性,open(‘filepath,encoding=’gb18030’,errors=‘ignore’);

d、一个文件中的编码格式不同问题,暂不知道怎么处理

 

二、错误2:unicodeescape  codec can t decode bytes in position 2-3: truncated  UXXXXXXXX escape

filepath=('C:\Users\Desktop\报文\报文.txt')
with open(filepath,errors='ignore') as d:
        q=d.read()
        print(q)

原因分析:

a、以上代码是在windows环境下不能解析问题,导致问题原因为 文件路径 使用的斜杠’\‘ 不是返斜杠'/', 导致解释器认为 此处不是路径的斜杠,

b、修正方法1  将路径中的斜杠改为 返斜杠,filepath=(C:/Users/Desktop/报文/报文.txt')

c、修正方法2,将路径地址前加r 让解释器默认认为此处为 路径地址,filepath=(r'C:\Users\Desktop\报文\报文.txt')

 

三、盗版方法总结

解决方法一:

 
  1. with open('Word2Vec.txt','r',encoding='utf-8') as f:

  2.     data = f.read()

解决方法二:

 
  1. with open('Word2Vec.txt','r',errors='igore') as f:

  2. data = f.read()

解决方法三:

 
  1. with open('Word2Vec.txt','rb') as f:

  2. data = f.read()

建议1:当你了解文本中字符串是什么类型时,使用方法一。(‘utf-8’,‘gbk’,‘latin-1’)

建议2:当不需要读取文本中其他编码格式的字符时,可以忽略格式错误的字符的读取,使用方法二。

建议3:‘rb’模式不会将读取的字节转换为字符,所以我觉得方法三适用于大多数情况。

大师指正

 

你可能感兴趣的:(Python学习,python)