在 python 中用逗号分隔列表,除非在 python 中用引号括起来

Split list by comma in python unless surrounded by quotes in python

如果我有一个字符串,我想在逗号所在的位置进行拆分,我该如何排除任何被引号括起来的子字符串?

例如

Input: 'a,b,3,"d,e",f,"e,xam,p,le,"]

Output: ['a', 'b', '3', 'd,e', 'f', 'e,xam,p,le,']

使用 .split(',') 不起作用,因为它不排除引号中的项目, 而且我不确定我将如何使用 re.split() 因为引号内可以有任何内容。没有设置子字符串的长度或逗号所在的位置。我要求尽可能避免不必要的 for 循环!

谢谢!

您可以利用 csv 模块来解析您的数据。因为你有一个字符串而不是一个文件,你可以使用 io.StringIO 来获得一个类似文件的对象。

代码就是:

import csv
from io import StringIO


reader = csv.reader(StringIO('a,b,3,"d,e",f,"e,xam,p,le,"'))
out = next(reader)

print(out)
# ['a', 'b', '3', 'd,e', 'f', 'e,xam,p,le,']