修复 Python 代码错误:UnicodeDecodeError: 'gbk' codec can't decode byte 0x95 in position 14: illegal multibyte sequence
修复 Python 代码错误:UnicodeDecodeError: 'gbk' codec can't decode byte 0x95 in position 14: illegal multibyte sequence
这段代码通常在处理中文文本时出现,是因为文件编码与 Python 解码器不匹配导致的。
错误原因
错误信息 UnicodeDecodeError: 'gbk' codec can't decode byte 0x95 in position 14: illegal multibyte sequence 指示:
- 'gbk' codec: Python 尝试使用
gbk编码解码文件。 - can't decode byte 0x95 in position 14: 在第 14 个字节位置遇到了无法解码的字节。
- illegal multibyte sequence: 该字节序列不属于
gbk编码规范。
通常情况下,这是因为文件编码与代码中默认的 gbk 解码器不匹配。例如,文件可能是使用 utf-8 编码的,但代码没有指定 utf-8 解码。
解决方法
1. 指定文件编码: 在打开文件时,明确指定文件编码为 utf-8,如下:
with open(filename, 'r', encoding='utf-8') as f:
# 代码逻辑
2. 修正代码逻辑: 将以下代码:
kwfile = open(filename,'r')
keywords = kwfile.readline()
kw_list = []
while keywords:
kw = keywords.strip()
kw_list.append(kw)
keywords = kwfile.readline()
kwfile.close()
修改为:
kw_list = []
with open(filename, 'r', encoding='utf-8') as f:
for line in f:
kw = line.strip()
kw_list.append(kw)
优化代码
- 使用
with open()语句打开文件,自动关闭文件,避免资源泄漏。 - 使用
for line in f:循环逐行读取文件内容,更简洁易懂。
代码示例
#encoding:utf-8
import urllib,re,random,time,sys,socket
...
def get_keywords(filename):#读取关键词返回列表
kw_list = []
with open(filename, 'r', encoding='utf-8') as f:
for line in f:
kw = line.strip()
kw_list.append(kw)
return kw_list
...
总结
在处理中文文本时,务必注意文件编码和 Python 解码器的一致性。通过指定文件编码和优化代码逻辑,可以有效避免 UnicodeDecodeError 错误。
原文地址: https://www.cveoy.top/t/topic/m3mz 著作权归作者所有。请勿转载和采集!