修复 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录