【问题标题】:Python using pandas: how to Ignore delimiter within ""?Python 使用 pandas:如何忽略“”中的分隔符?
【发布时间】:2025-11-23 20:40:01
【问题描述】:

我的 CSV 文件包含一个包含 16 列的标题。数据行包含用“,”分隔的 16 个值。

刚刚发现有些行包含"" 中包含, 的值。这使解析器感到困惑。它不是期望 15 个逗号,而是找到 18 个。下面的一个示例:

"23210","Cosmetic","Lancome","Eyes Virtuose Palette Makeup","**7,2g**","W","Decorative range","5x**1,2**g Eye Shadow + **1,2**g Powder","http://image.jpg","","3660732000104","","No","","1","1"

如何让解析器忽略""中的逗号?

我的代码如下所示:

import pandas

csv1 = pandas.read_csv('Produktlista.csv', quoting=3)
csv2 = pandas.read_csv('Prislista.csv', quoting= 3)
merged = csv1.merge(csv2, on='id')
merged.to_csv("output.csv", index=False, quoting=3)

【问题讨论】:

    标签: python csv pandas


    【解决方案1】:

    传递参数quotechar='"'。来自Pandas Documentation

    quotechar:str(长度为1),可选

    用于表示引用项的开始和结束的字符。引用的项目可以包含分隔符,它将被忽略。

    例如:

    In [9]:
    
    t='''"23210","Cosmetic","Lancome","Eyes Virtuose Palette Makeup","7,2g","W","Decorative range","5x1,2g Eye Shadow + 1,2g Powder","http://image.jpg","","3660732000104","","No","","1","1"'''
    df = pd.read_csv(io.StringIO(t), quotechar='"', header=None)
    df
    Out[9]:
          0         1        2                             3     4  5   \
    0  23210  Cosmetic  Lancome  Eyes Virtuose Palette Makeup  7,2g  W   
    
                     6                                7                 8   9   \
    0  Decorative range  5x1,2g Eye Shadow + 1,2g Powder  http://image.jpg NaN   
    
                  10  11  12  13  14  15  
    0  3660732000104 NaN  No NaN   1   1  
    

    【讨论】:

    • 太棒了。需要更多关于 io.iStringIO() 的帮助。如何将我的文件“Produktlista.csv”读入其中?尝试使用 csv1 = pandas.read_csv(io.StringIO(Produktlista.csv), quotechar='"',quoting=3) 显然不起作用。请原谅我的无知,对 Python 很陌生。
    • 忽略 stringio 位,将路径传递给您的 csv
    • 试过它喜欢这个 csv1 = pandas.read_csv("Produktlista.csv", quotechar='"',quoting=3) 作为我的原始代码。但我收到以下错误文件“解析器.pyx",第 607 行,在 pandas.parser.TextReader._get_header (pandas\p arser.c:6091) pandas.parser.CParserError: Passed header=0 但文件中只有 0 行
    • 开始工作了,但是 pandas 还是在网上这样抱怨 "1256","EDT","Dolce & Gabbana","Light Blue","4,5ml","W"," ","","image.jpg","","737052074412","&qu…"
    • 我很肯定这是由值“4,5ml”引起的。参数 quotechar='"' 不应该解决这个问题吗?