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

pandas.read_csv读取CSV时忽略引号内逗号的问题求助

问题描述

将CSV文件导入pandas DataFrame时,引号内的逗号未被正确忽略,导致字段被错误拆分。尝试调整quotechar参数后仍无效果。

原代码

import csv
import pandas

df = pandas.read_csv( 'test_quote.csv', header=None,sep=',', quotechar='\"', quoting=csv.QUOTE_MINIMAL, encoding='ascii', engine='python')
print(df)

实际输出

$ python3 test_quote.py 
        0     1              2       3                            4       5       6
0  201571  2080    "December 2   2022"    "November 1 - November 30   2022"  487.29
1  345741  5377    "December 3   2022"    "November 1 - November 30   2022"  729.35
2  995349  3672   "December 2    2022"   "November 1 - November 30    2022"  937.33
3  475601  3672   "December 2    2022"   "November 1 - November 30    2022"  790.17
4  228548  3672    "December 7   2022"    "November 1 - November 30   2022"  682.38

期望输出

$ python3 test_quote.py 
        0     1                     2                                   3       4
0  201571  2080    "December 2, 2022"    "November 1 - November 30, 2022"  487.29
1  345741  5377    "December 3, 2022"    "November 1 - November 30, 2022"  729.35
2  995349  3672   "December 2 , 2022"   "November 1 - November 30 , 2022"  937.33
3  475601  3672   "December 2 , 2022"   "November 1 - November 30 , 2022"  790.17
4  228548  3672    "December 7, 2022"    "November 1 - November 30, 2022"  682.38

CSV文件内容(test_quote.csv)

201571, 2080, "December 2, 2022", "November 1 - November 30, 2022", 487.29
345741, 5377, "December 3, 2022", "November 1 - November 30, 2022", 729.35
995349, 3672, "December 2 , 2022", "November 1 - November 30 , 2022", 937.33
475601, 3672, "December 2 , 2022", "November 1 - November 30 , 2022", 790.17
228548, 3672, "December 7, 2022", "November 1 - November 30, 2022", 682.38
解决方案

问题出在两个关键点:

  1. quotechar参数错误使用了HTML转义格式\",在Python字符串中直接用'"'即可表示双引号;
  2. CSV中每个逗号后都带有空格,需要开启skipinitialspace=True来跳过字段开头的空格,避免字段被错误分割。

修改后的代码:

import csv
import pandas

df = pandas.read_csv(
    'test_quote.csv',
    header=None,
    sep=',',
    quotechar='"',
    quoting=csv.QUOTE_MINIMAL,
    encoding='ascii',
    engine='python',
    skipinitialspace=True
)
print(df)

执行后即可得到符合期望的输出,引号内的逗号会被正确忽略,字段不会被错误拆分。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:20:28