【问题标题】:Read CSV file with comma within fields in Python在 Python 的字段中读取带逗号的 CSV 文件
【发布时间】:2012-01-08 20:38:18
【问题描述】:

我需要读取一个包含逗号字段的 CSV 文件,因此我将包含逗号的字段用双引号括起来,例如:

1, "text1,text2", "text3, text4", a, b, c

但是当我尝试在 Python 中读取文件时,我得到了用逗号分隔的字段,如下所示:

row[0] = 1
row[1] = text1
row[2] = text2
row[3] = text3
row[4] = text4
row[5] = a
row[6] = b
row[7] = c

我正在使用以下代码读取 CSV 文件:

info = csv.reader(open('./info.csv'))  
for row in info :
    print row[0] + " * " + row[1] ...

是否可以读取包含逗号的双引号字段?

【问题讨论】:

    标签: python csv


    【解决方案1】:

    Python csv 模块实际上支持带引号的字段,即使在默认情况下也是如此。你这里的问题是Python默认不会跳过空格,所以需要使用skipinitialspace=True

    >>> s = StringIO.StringIO('1, "text1,text2", "text3, text4", a, b, c')
    >>> list(csv.reader(s, skipinitialspace=True))
    [['1', 'text1,text2', 'text3, text4', 'a', 'b', 'c']]
    

    【讨论】:

    • csv.Sniffer().sniff(s).__dict__ 也会表示:{'__doc__': None, '__module__': 'csv', '_name': 'sniffed', 'delimiter': ',', 'doublequote': False, 'lineterminator': '\r\n', 'quotechar': '"', 'quoting': 0, 'skipinitialspace': True}
    猜你喜欢
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 2013-01-02
    • 2023-03-05
    • 1970-01-01
    • 2017-03-17
    相关资源
    最近更新 更多