2010-08-08 100 views
2

如何将两个相反的值分割为一个字符串?例如()是 “deliminators” 和我有以下字符串:Python中的多重分割

Wouldn't it be (most) beneficial to have (at least) some idea? 

我需要以下输出(作为数组)

["Wouldn't it be ", "most", " beneficial to have ", "at least", " some idea?"] 
+0

在Python中,它们通常被称为“列表”,而不是数组。还有“口衔”,相当于PHP的关联数组。 – quantumSoup 2010-08-08 20:19:29

+0

@quantum:谢谢。我知道这个“适当的”术语,但它和Mongo中的'show tables'一样。 Mongo没有桌子,但高兴地接受它并向你展示所有藏品。 – 2010-08-08 20:21:08

+2

@Josh K:不,调用列表数组是错误的。这就像给自行车打电话,因为他们都有车轮。 – 2010-08-08 20:24:53

回答

13

re.split()

s = "Wouldn't it be (most) beneficial to have (at least) some idea?" 
l = re.split('[()]', s); 
+0

+1不重新发明车轮。 – muhuk 2010-08-08 20:53:52

+0

不错,简单:) – 2010-08-08 21:13:41

0

您可以使用正则表达式的分割:

import re 
pattern = re.compile(r'[()]') 
pattern.split("Wouldn't it be (most) beneficial to have (at least) some idea?") 
["Wouldn't it be ", 'most', ' beneficial to have ', 'at least', ' some idea?'] 
+3

你不需要转义字符类中的'()'。 – kennytm 2010-08-08 20:17:43

0

使用正则表达式,既()字符匹配:

import re 
re.split('[()]', string) 
1

在这种特殊情况下,听起来就像将通过空间更有意义,先分割,然后修剪括号。

out = [] 
for element in "Wouldn't it be (most) beneficial to have (at least) some idea?".split(): 
    out.append(element.strip('()')) 

嗯...重读这个问题,你想保留一些空间,所以也许不是:),但仍然保持在这里。

+0

我会*喜欢*保留空格。 – 2010-08-08 20:46:48