我正在寻找一种更简单/更快捷的方法来用括号/括号分割字符串,以及删除空格和无用的信息。
更具体地说,我想改变
[ 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}']
我正在寻找修改代码的建议。如果符合以下条件,那将是理想的:
会有无循环。
较少'拆分'。 (我的代码中有三个'拆分'功能)
更一般。 (我使用内容[i] [4:-2]删除不是一般的'{'和'}'
答案 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']