【问题标题】:How to prevent splitting by comma on expressions guarded by double quotes?如何防止在双引号保护的表达式上用逗号分隔?
【发布时间】:2013-04-21 08:53:13
【问题描述】:

我有一行(来自 csv),如下所示:

line = 'M1,After.Life,Agnieszka Wojtowicz-Vosloo,Agnieszka Wojtowicz-Vosloo,"Drama, Thriller",2009/10/2/,80'

当我print line.split(',') 时,我得到:

['M1', 'After.Life', 'Agnieszka Wojtowicz-Vosloo', 'Agnieszka Wojtowicz-Vosloo', '"Drama', ' Thriller"', '2009/10/2/', '80']

这是不可取的,因为它也分裂了“戏剧,惊悚片”。换句话说,我想要的结果是:

['M1', 'After.Life', 'Agnieszka Wojtowicz-Vosloo', 'Agnieszka Wojtowicz-Vosloo', '"Drama Thriller"', '2009/10/2/', '80']

对简单方法有什么想法吗?谢谢

【问题讨论】:

    标签: python string csv split


    【解决方案1】:

    您改用csv module。您有 CSV 格式,并且该模块知道如何正确处理引用的值。

    import csv
    
    with open(somefilename, 'rb') as inputfile:
        reader = csv.reader(inputfile)
        for row in reader:
            # row is a list of string values found on each line, ready split, 
            # with qouted values preserved.
    

    示例行的快速演示:

    >>> import csv
    >>> inputfile=['M1,After.Life,Agnieszka Wojtowicz-Vosloo,Agnieszka Wojtowicz-Vosloo,"Drama, Thriller",2009/10/2/,80\n']
    >>> list(csv.reader(inputfile))
    [['M1', 'After.Life', 'Agnieszka Wojtowicz-Vosloo', 'Agnieszka Wojtowicz-Vosloo', 'Drama, Thriller', '2009/10/2/', '80']]
    

    请注意,引号已被删除,但逗号仍作为值的一部分存在。

    【讨论】:

    • 谢谢,正是我需要的!我会尽可能接受答案;)
    猜你喜欢
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多