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

Python读取含特殊字符的CSV文件乱码问题解决

解决Python读取含特殊字符CSV的乱码问题

1. 读取时指定正确的编码格式

CSV乱码大多源于读取时编码不匹配,针对含多国语言特殊字符的文件,优先尝试以下编码:

  • utf-8 / utf-8-sig:绝大多数现代CSV采用的编码,utf-8-sig可处理带BOM头的UTF-8文件
  • latin-1 / cp1252:部分Windows环境生成的CSV可能使用这类编码

用标准csv模块的示例:

import csv

# 尝试utf-8编码读取
with open('your_file.csv', 'r', encoding='utf-8') as csv_file:
    reader = csv.reader(csv_file)
    for row in reader:
        print(row)  # 验证特殊字符显示情况

# 若utf-8失效,换用utf-8-sig处理带BOM的文件
with open('your_file.csv', 'r', encoding='utf-8-sig') as csv_file:
    reader = csv.reader(csv_file)
    # 后续数据处理操作

用pandas的示例:

import pandas as pd

df = pd.read_csv('your_file.csv', encoding='utf-8')
# 编码不符时尝试替换为latin-1
# df = pd.read_csv('your_file.csv', encoding='latin-1')

2. 自动检测文件实际编码

不确定文件编码时,用chardet库检测:

  1. 先安装库:pip install chardet
  2. 检测并读取:
import chardet
import csv

# 以二进制模式读取文件,检测编码
with open('your_file.csv', 'rb') as f:
    detect_result = chardet.detect(f.read())

# 使用检测到的编码读取文件
with open('your_file.csv', 'r', encoding=detect_result['encoding']) as csv_file:
    reader = csv.reader(csv_file)
    for row in reader:
        print(row)

3. 修复已读错的乱码字符串

若已用错误编码读取内容,可尝试反向编码解码修复(仅适用于特定场景):

# 示例:用latin-1错误读取utf-8内容后的修复
wrong_str = '�degaard'
fixed_str = wrong_str.encode('latin-1').decode('utf-8')
print(fixed_str)  # 输出 Ødegaard

额外注意

写入CSV时需指定相同编码,避免二次乱码:

with open('output.csv', 'w', encoding='utf-8', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(your_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:15:41