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

如何在Python中读取99%为UTF-8编码的CSV文件?

解决UTF-8编码少量异常的CSV读取问题

针对你遇到的「文件主要是UTF-8编码,但存在少量无效字节导致读取失败」的问题,以下是几种实用解决方案:

方案1:读取时自动处理无效字节

直接在打开文件时指定errors参数,让Python自动处理无效的UTF-8字节:

忽略无效字节

如果可以接受丢失少量异常内容,用errors='ignore'跳过无效字节:

import csv

with open('file.csv', mode='r', encoding='utf-8', errors='ignore') as f:
    reader = csv.DictReader(f)
    for row in reader:
        # 处理每一行数据
        print(row)

用替换字符保留位置

如果不想丢失内容结构,用errors='replace'将无效字节替换为�占位符:

import csv

with open('file.csv', mode='r', encoding='utf-8', errors='replace') as f:
    reader = csv.DictReader(f)
    for row in reader:
        # 处理每一行数据
        print(row)

方案2:先修复文件编码再读取

如果需要彻底清理文件中的编码问题,可以先将文件转换为纯UTF-8格式,再进行读取:

import codecs
import csv

# 读取原文件并修复编码
with codecs.open('file.csv', 'r', encoding='utf-8', errors='ignore') as f_in:
    content = f_in.read()

# 保存修复后的文件
with open('fixed_file.csv', 'w', encoding='utf-8') as f_out:
    f_out.write(content)

# 读取修复后的文件
with open('fixed_file.csv', mode='r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        # 处理数据
        print(row)

方案3:定位异常位置手动修正

如果需要精准定位问题并手动修正,可以先找到错误所在的行和位置:

import codecs

line_num = 0
try:
    with codecs.open('file.csv', 'r', encoding='utf-8') as f:
        for line in f:
            line_num += 1
except UnicodeDecodeError as e:
    print(f"错误出现在第 {line_num} 行,字节位置 {e.start}")
    # 手动打开文件定位该行,修正无效字节后再读取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:07:38