首页 > 解决方案 > 在python中用逗号拆分列表,除非在python中被引号包围

问题描述

如果我有一个要在逗号所在位置拆分的字符串,如何排除任何被引号包围的子字符串?

前任。

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

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

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

谢谢!

标签: pythonsplitre

解决方案


您可以利用该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,']

推荐阅读