You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python处理特殊字符问题:读取.gz文件时Unicode解码错误

解决读取.gz文件时的UnicodeDecodeError问题

问题原因

出现UnicodeDecodeError是因为文件中包含的§字符(对应字节0xa7)不属于UTF-8编码范围,该字节在Latin-1(ISO-8859-1)或Windows-1252编码中对应§符号,而你之前的代码默认用UTF-8解码,导致解码失败。

解决方案

修改读取.gz文件的代码,明确指定正确的编码格式,即可正常读取包含§的行:

示例修改代码

假设你原来的读取代码类似:

import gzip
import os

for filename in os.listdir("./gz_files"):
    if filename.endswith(".gz"):
        with gzip.open(os.path.join("./gz_files", filename), 'rt') as f:
            for line in f:
                # 处理行逻辑
                print(line)

将其修改为指定encoding='latin-1'(或'cp1252',两者对0xa7的解析一致):

import gzip
import os

for filename in os.listdir("./gz_files"):
    if filename.endswith(".gz"):
        with gzip.open(os.path.join("./gz_files", filename), 'rt', encoding='latin-1') as f:
            for line in f:
                # 处理行逻辑,比如提取目标行写入报告
                if ':§f Press' in line:
                    with open("report.txt", 'a', encoding='utf-8') as report_f:
                        report_f.write(line)

说明

  • latin-1是单字节编码,能覆盖所有0-255的字节值,不会出现解码失败的情况,同时能正确解析§符号。
  • 写入报告时用utf-8编码,确保报告文件的通用性。

内容的提问来源于stack exchange,提问作者Prison Feed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 13:29:58