Python字符串拆分多个括号

时间:2015-06-23 21:10:00

标签: python regex string split

我正在寻找一种更简单/更快捷的方法来用括号/括号分割字符串,以及删除空格和无用的信息。

更具体地说,我想改变

[ 5 * * ]{t=0, 1 }{t=0, 3 }{t=0, 2 }

分为两部分:

 5 * *   (or [ 5 * * ])
['1', '3', '2']

我设法使用我的代码执行此操作:

test = '[ 5 * * ]{t=0, 1 }{t=0, 3 }{t=0, 2 }  '
parsed =  test.split("[")[1].split(']') 
index = parsed[0]
content = parsed[1].split('{')[1:]
seq=[]
for i in range(len(content)):
    seq.append(content[i][4:-2].replace(' ', ''))   
print index
print seq

得到:

 5 * * 
['1', '3', '2}']

我正在寻找修改代码的建议。如果符合以下条件,那将是理想的:

  1. 会有无循环

  2. 较少'拆分'。 (我的代码中有三个'拆分'功能)

  3. 更一般。 (我使用内容[i] [4:-2]删除不是一般的'{'和'}'

1 个答案:

答案 0 :(得分:2)

您可以使用re.findall和列表理解:

>>> l=re.findall(r'\[([^\]]*)\]|,([^}]*)}',s)
>>> [i.strip() for j in l for i in j if i]
['5 * *', '1', '3', '2']

以下正则表达式:

r'\[([^\]]*)\]|,([^}]*)}'

将匹配括号(\[([^\]]*)\])之间以及逗号和},([^}]*)})之间的所有内容。

或者您可以使用re.split()

>>> [i.strip() for i in re.split(r'[{},[\]]',s) if i and '=' not in i]
['5 * *', '1', '3', '2']