在Python中使用正则表达式拆分多个括号组

时间:2017-04-19 01:13:06

标签: python regex

我有一个字符串,括在括号中的多组文字。

a = '(apple)(banana)(orange)(grape)'

我想要一个包含以下项目的列表:

b = ['apple', 'banana', 'orange', 'grape']

我尝试使用re.split

b = re.split(r"(?:\(|\)\(|\))",a)

但是我得到了以下不正确的输出:

['', 'apple', 'banana', 'orange', 'grape', '']

为什么它返回列表中的前导和尾随零长度字符串?我该怎么办才能解决这个问题?

2 个答案:

答案 0 :(得分:1)

试试这个:

re.findall('\(([^)]*)\)', a)

答案 1 :(得分:0)

@felixc指出,

re.findall是一个不错的选择,但您可以根据自己的filter解决方案再做一步:

filter(None, b)

正则表达式可以像\W一样简单:

>>> import re
>>> a = '(apple)(banana)(orange)(grape)'
>>> filter(None, re.split('\W', a))
['apple', 'banana', 'orange', 'grape']