一、错误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')
三、盗版方法总结
解决方法一:
-
with open('Word2Vec.txt','r',encoding='utf-8') as f: -
data = f.read()
解决方法二:
-
with open('Word2Vec.txt','r',errors='igore') as f: -
data = f.read()
解决方法三:
-
with open('Word2Vec.txt','rb') as f: -
data = f.read()
建议1:当你了解文本中字符串是什么类型时,使用方法一。(‘utf-8’,‘gbk’,‘latin-1’)
建议2:当不需要读取文本中其他编码格式的字符时,可以忽略格式错误的字符的读取,使用方法二。
建议3:‘rb’模式不会将读取的字节转换为字符,所以我觉得方法三适用于大多数情况。
大师指正
本文分析了Python中UnicodeDecodeError和unicodeescape错误的原因及解决方案。针对文件编码不匹配,建议使用指定编码方式打开,如`open(filepath, encoding='gb18030', errors='ignore')`。对于文件路径解析问题,指出Windows环境下路径斜杠使用不当会导致问题,可通过更换斜杠或使用r前缀修正。此外,提供了三种通用的错误处理方法:直接指定编码、忽略错误和以二进制模式读取。
1万+

被折叠的 条评论
为什么被折叠?



