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

如何读取列以双引号空格分隔、字段含特殊字符的CSV文件?

特殊格式CSV读取问题及解决方案

问题背景

常规CSV文件多使用逗号、竖线|等作为分隔符,本次遇到的CSV格式特殊,数据行示例如下:

"2017-02-27 ""2017-02-25"" ""15438"" ""2017-02-27",19,"671"" ""1"" ""14"" ""John Smith"" ""614""
每行共对应8个字段,其中2017-02-27",19,"671为单个字段,内部包含引号和逗号,初步判断实际列分隔符为"" ""。

附加问题

CSV首行是表头,表头之间仅用空格分隔,表头本身包含下划线(示例:name_1 name_2 name_3),询问是直接通过read_csv的参数配置读取表头更合适,还是直接将表头复制为列表传给names参数更简单。

已验证的失效方案

此前尝试过多种社区常见方案,均未达到预期效果:

  • 配置sep='"" ""',会将整行识别为单列
  • 配置sep=',\s+',quoting=csv.QUOTE_ALL,拆分结果不符合预期
  • 配置sep=" ", quotechar="~",拆分结果不符合预期
  • 配置sep='[" ]* [" ]*', engine='python',拆分结果不符合预期

可行解决方案

表头处理建议

由于表头的分隔规则(空格分隔)和数据行的分隔规则完全不同,无需额外编写复杂的参数兼容两种规则,直接将表头复制为列表传给names参数更简单高效。

数据读取代码

df = pd.read_csv(
    'test.csv',
    header=None,
    sep='\s""',
    engine='python',
    skiprows=1,
    index_col=False
).replace('"','', regex=True)
# 后续可自行给df.columns赋值为提前整理好的表头列表

实现思路

  1. 先指定sep='\s""'作为分隔符拆分,适配首两列及其余列的分隔规则
  2. 跳过首行表头,避免和数据行的分隔规则冲突
  3. 最后通过正则替换批量去除所有多余的双引号,完成数据清洗

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:15:01