Python用空格和括号分割未知字符串

时间:2013-06-16 14:18:11

标签: python string split

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

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

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

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

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

full_split=[split1, split2, split3, split4]

而且,未知字符串将是如果他们不断添加单词,它将继续添加拆分变量(split5split6

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

3 个答案:

答案 0 :(得分: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']

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

答案 1 :(得分:4)

使用regexstr.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']

答案 2 :(得分:0)

这是有效的,并删除空字符串

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

res1 = [y for y in re.split(r'\(([^\(]*)\)', strs) if y <> ' ']
print res1