如何拆分包含列表的字符串(作为字符串)

时间:2017-05-02 20:54:47

标签: python regex string

例如,我有一个字符串x = '1,test, 2,3,4,[5,6,7],9',我想将其拆分为[‘1’,’test’,’2’,’3’,’4’,’[5,6,7]’,’9’]

我尝试使用split(",")但由于列表中的","而无法正常工作。

1 个答案:

答案 0 :(得分:3)

你可以破解csv来执行此操作:

>>> import csv
>>> s='1,test, 2,3,4,[5,6,7],9'
>>> next(csv.reader([s.replace('[','"').replace(']','"')]))
['1', 'test', ' 2', '3', '4', '5,6,7', '9']

如果你想要大括号:

>>> ["[{}]".format(e) if "," in e else e for e in next(csv.reader([s.replace('[','"').replace(']','"')]))]
['1', 'test', ' 2', '3', '4', '[5,6,7]', '9']

或者,使用regex

>>> import re
>>> re.findall(r'\[[^\]]+\]|[^,]+', s)
['1', 'test', ' 2', '3', '4', '[5,6,7]', '9']

模式解释here