0

如果我有一个字符串可能是:

'Hello (Test1 test2) (Hello1 hello2) other_stuff'

我想把它分成这样的东西:

split1='hello'
split2='Test1, test2'
split3='Hello1, hello2'
split4='other_stuff'

然后我将它放入一个变量中:

full_split=[split1, split2, split3, split4]

而且,如果他们继续在末尾添加单词,则未知字符串将继续添加拆分变量 ( split5, split6)

我正在研究正则表达式,但我不喜欢导入 python 不附带的模块。如果必须,我会的。

4

3 回答 3

4

标准库中有一个re模块。你可以做这样的事情:

>>> s="Hello (Test1 test2) (Hello1 hello2) other_stuff"
>>> re.findall(r'\w+|\(\w+\s+\w+\)', s)
['Hello', '(Test1 test2)', '(Hello1 hello2)', 'other_stuff']

事实上,这在很大程度上取决于您的输入是什么样子(空格?其他括号?),因此您可能需要根据您的情况对其进行调整。

于 2013-06-16T14:22:22.053 回答
4

使用regex,str.splitstr.join:

>>> import re
>>> strs = "Hello (Test1 test2) (Hello1 hello2) other_stuff"
>>> [", ".join(x.split()) for x in re.split(r'[()]',strs) if x.strip()]
['Hello', 'Test1, test2', 'Hello1, hello2', 'other_stuff']
于 2013-06-16T14:22:51.910 回答
0

This is working, and delete empty strings

import re, itertools
strs = 'Hello (Test1 test2) (Hello1 hello2) other_stuff'

res1 = [y for y in re.split(r'\(([^\(]*)\)', strs) if y <> ' ']
print res1     
于 2013-06-28T08:21:48.390 回答