在 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,']
如果我有一个字符串,我想在逗号所在的位置进行拆分,我该如何排除任何被引号括起来的子字符串?
例如
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,']