4

我有一堆以字符串形式存储的数学表达式。这是一个简短的:

stringy = "((2+2)-(3+5)-6)"

我想把这个字符串分解成一个列表,其中只包含每个“子括号短语”中的信息(我相信有更好的表达方式。)所以我的产量将是:

['2+2','3+5']

我有几个关于如何做到这一点的想法,但我一直遇到一个“好的,现在是什么”的问题。

例如:

for x in stringy:
    substring = stringy[stringy.find('('+1 : stringy.find(')')+1]
    stringlist.append(substring)

返回 2+2 的效果非常好,但仅此而已,我完全不知道如何通过其余部分...

4

2 回答 2

2

使用正则表达式的一种方法:

import re
stringy = "((2+2)-(3+5)-6)"
for exp in re.findall("\(([\s\d+*/-]+)\)", stringy):
    print exp 

输出

2+2
3+5
于 2013-05-13T22:34:57.153 回答
1

您可以使用如下的正则表达式:

import re

x = "((2+2)-(3+5)-6)"

re.findall(r"(?<=\()[0-9+/*-]+(?=\))", x)

结果:

['2+2', '3+5']
于 2013-05-13T22:35:12.997 回答