如果我有一个字符串可能是:
'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的模块。如果我必须的话。
答案 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)
使用regex
,str.split
和str.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