【问题标题】:How to take double quouted value from a string [duplicate]如何从字符串中获取双引号值[重复]
【发布时间】:2016-05-30 07:07:51
【问题描述】:

我有一个字符串,我想将它转换为一个列表,其中每个元素都用逗号分隔。

例如'test1,"test2,test3",test4' 将变为['test1', 'test2 test3', 'test4']

请注意,我不想拆分 test2test3

【问题讨论】:

标签: python


【解决方案1】:

和TigerhawkT3的回答一样,我也用csv.reader,但是多了2个参数。

import csv

src_text = 'test1,"test2,test3",test4'
r = csv.reader([src_text], delimiter= ',', quotechar='"')
converted_list = next(r)

输出

>>> print converted_list
['test1', 'test2,test3', 'test4']

【讨论】:

    【解决方案2】:

    您所拥有的是 CSV 文件中的一行。使用csv.reader

    >>> import csv
    >>> lines = ['test1,"test2,test3",test4', 'testa,"testb,testc",testd']
    >>> r = csv.reader(lines)
    >>> list(r)
    [['test1', 'test2,test3', 'test4'], ['testa', 'testb,testc', 'testd']]
    

    【讨论】:

    • 我想知道我的答案有什么问题或没有帮助,以使其值得一票否决,以便我可以改进它。
    【解决方案3】:

    你可以先用"split()它,用空格替换逗号,strip()尾随空格,并删除空元素(当双引号在末尾时)。这将需要相当多的迭代。看看@TigerhawkT3 的回答。

    def split_string(s):
        ret = s.split('"')
        ret = [ " ".join(x.split(",")) for x in ret ]
        ret = [x.strip() for x in ret]
        ret = [ x for x in ret if x != ""]
    
        return ret
    

    【讨论】:

      猜你喜欢
      • 2018-07-31
      • 2014-12-23
      • 2014-05-12
      • 2014-09-26
      • 1970-01-01
      • 2016-04-19
      • 2019-01-24
      • 2013-04-19
      • 1970-01-01
      相关资源
      最近更新 更多