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

使用Pandas读取已分隔CSV文件时遇解析及编码问题求助

解决CSV文件读取的编码、字段解析及列错乱问题

针对你遇到的核心问题,按优先级给出具体解决步骤:

1. 修复编码错误(UnicodeDecodeError)

报错中utf-8无法解码字节0xfc,说明文件并非UTF-8编码,0xfc对应拉丁编码(latin-1)中的ü字符。读取时指定对应编码即可解决:

import pandas as pd

# 优先尝试latin-1或cp1252(Windows环境常用拉丁编码)
df = pd.read_csv('your_file.csv', encoding='latin-1')

2. 跳过首行无关信息,指定正确分隔符

首行是下载信息而非表头,且数据实际用分号分隔(你提到列内出现分号),这是50列被压缩的核心原因。需同时设置两个关键参数:

# 跳过第1行(skiprows=1表示跳过索引为0的首行),指定分号为列分隔符
df = pd.read_csv('your_file.csv', encoding='latin-1', skiprows=1, sep=';')

3. 解决字段数不匹配问题(ParserError)

如果仍出现预期字段数不符的错误,大概率是部分行存在未转义的引号或特殊字符,可通过以下方式处理:

  • 显式指定引号规则,避免把字段内的分隔符误判为列分隔:
import csv

# 假设字段用双引号包裹,遇到字段内的分号时自动忽略
df = pd.read_csv('your_file.csv', encoding='latin-1', skiprows=1, sep=';', 
                 quotechar='"', escapechar='\\')
  • 若仍有少量错误行,可临时启用错误行警告/跳过(建议事后检查这些行的内容):
# 'warn'会打印错误行信息,'skip'直接跳过错误行
df = pd.read_csv('your_file.csv', encoding='latin-1', skiprows=1, sep=';',
                 on_bad_lines='warn')

验证结果

读取后可通过以下命令确认列数和数据格式是否正常:

print(f"列数:{len(df.columns)}")
print(df.head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:55:02