用逗号分割以及如何在 python 中的分割中从引号中排除逗号

时间:2021-04-04 08:16:30

标签: python python-3.x split

我正在努力根据逗号拆分此字符串,但应忽略双引号内的逗号。

cStr = 'aaaa,bbbb,"ccc,ddd"' 

expected result : ['aaaa','bbbb',"ccc,ddd" ]

请帮助我,我尝试了以下解决方案中提到的不同方法,但无法解决此问题[我不允许使用 csv、pyparsing 模块]

之前已经针对以下输入提出了类似的问题。

cStr = '"aaaa","bbbb","ccc,ddd"' 

solution

result = ['"aaa"','"bbb"','"ccc,ddd"'] 

3 个答案:

答案 0 :(得分:2)

我处理这个问题的常用方法是使用一个正则表达式交替,在非引用的 CSV 术语之前,先热切地匹配双引号术语:

import re

cStr = 'aaaa,bbbb,"ccc,ddd"'
matches = re.findall(r'(".*?"|[^,]+)', cStr)
print(matches)  # ['aaaa', 'bbbb', '"ccc,ddd"']

答案 1 :(得分:0)

您可以使用列表理解,不需要其他库:

filter

出:

case

答案 2 :(得分:0)

这可以通过三个步骤来实现-

cstr = 'aaaa,bbbb,"ccc,ddd","eee,fff,ggg"'

步骤 1-

X = cstr.split(',"')

步骤 2-

regular_list = [i if '"' in i else i.split(",") for i in X ]

步骤 3-

final_list = []
for i in regular_list:
    if type(i) == list:
        for j in i:
            final_list.append(j)
    else:
        final_list.append('"'+i)

最终输出 -

['aaaa', 'bbbb', '"ccc,ddd"', '"eee,fff,ggg"']
相关问题