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

读取7GB压缩CSV文件时遭遇UnicodeDecodeError问题求助

解决大压缩CSV读取的Unicode解码异常问题

1. 定位出错的具体数据块

既然是分块读取,直接在代码里加异常捕获,记录当前处理到的行号,把出错的块存下来分析:

import pandas as pd

chunk_size = 10000  # 可根据内存情况调整块大小
file_path = "你的压缩文件路径.csv.gz"

for chunk_idx, chunk in enumerate(pd.read_csv(file_path, encoding='utf-8-sig', chunksize=chunk_size)):
    try:
        # 打印进度,明确读取位置
        if chunk_idx % 100 == 0:
            print(f"已处理 {chunk_idx * chunk_size} 行")
        # 这里可加入你的数据处理逻辑
    except UnicodeDecodeError as e:
        print(f"在第 {chunk_idx * chunk_size} 行附近解码失败: {e}")
        # 将出错块保存为小文件,方便后续查看
        chunk.to_csv(f"出错块_{chunk_idx}.csv", index=False)
        break

注意用utf-8-sig替代utf-8,这个编码会自动识别并跳过UTF-8-BOM的开头标记,避免用latin_1读取时出现的开头乱码问题。

2. 快速跳过或替换错误行

不想定位具体问题行的话,用pandas自带参数直接绕过去:

  • 跳过有问题的行(pandas 1.3.0及以上版本支持):
pd.read_csv(file_path, encoding='utf-8-sig', chunksize=chunk_size, on_bad_lines='skip')
  • 将解码失败的字节替换为占位符(如�):
pd.read_csv(file_path, encoding='utf-8-sig', chunksize=chunk_size, encoding_errors='replace')

3. 检查压缩文件完整性

你提到跳转文件末尾时工具崩溃,大概率是压缩文件本身损坏。用命令行工具验证:

  • 若为gzip压缩,执行gzip -t 你的文件名.csv.gz,报错则说明文件损坏,重新获取源文件最直接
  • 若为zip压缩,执行zip -T 你的文件名.csv.zip

4. 逐行扫描异常字节

如果上述方法无效,用底层逐行读取精准定位问题行:

import codecs

with codecs.open(file_path, 'r', encoding='utf-8-sig') as f:
    for line_num, line in enumerate(f, 1):
        try:
            # 验证该行能否正常转换为UTF-8编码
            line.encode('utf-8')
        except UnicodeEncodeError as e:
            print(f"第 {line_num} 行存在异常字节: {e}")
            print(f"行内容片段: {line[:100]}...")  # 打印前100个字符辅助排查
            break

5. 用latin_1读取后清理BOM乱码

如果只能用latin_1读取,开头的是UTF-8-BOM的三个字节解码结果,手动清理即可:

df = pd.read_csv(file_path, encoding='latin_1')
# 清理列名中的BOM标记
df.columns = df.columns.str.replace('^\ufeff', '', regex=True)
# 批量清理内容列中的BOM标记
for col in df.select_dtypes(include='object').columns:
    df[col] = df[col].str.replace('^\ufeff', '', regex=True)

注:这只是临时解决方案,建议优先找到编码异常根源,避免后续数据问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:43:16