我有一个字符串,括在括号中的多组文字。
a = '(apple)(banana)(orange)(grape)'
我想要一个包含以下项目的列表:
b = ['apple', 'banana', 'orange', 'grape']
我尝试使用re.split
:
b = re.split(r"(?:\(|\)\(|\))",a)
但是我得到了以下不正确的输出:
['', 'apple', 'banana', 'orange', 'grape', '']
为什么它返回列表中的前导和尾随零长度字符串?我该怎么办才能解决这个问题?
答案 0 :(得分:1)
试试这个:
re.findall('\(([^)]*)\)', a)
答案 1 :(得分:0)
re.findall
是一个不错的选择,但您可以根据自己的filter
解决方案再做一步:
filter(None, b)
正则表达式可以像\W
一样简单:
>>> import re
>>> a = '(apple)(banana)(orange)(grape)'
>>> filter(None, re.split('\W', a))
['apple', 'banana', 'orange', 'grape']