我有一堆数学表达式存储为字符串。这是一个简短的:
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)
只是peachy返回2 + 2,但这就是它的范围,我完全是在如何通过其余的... ...
答案 0 :(得分:2)
使用正则表达式的一种方法:
import re
stringy = "((2+2)-(3+5)-6)"
for exp in re.findall("\(([\s\d+*/-]+)\)", stringy):
print exp
<强>输出强>
2+2
3+5
答案 1 :(得分:1)
您可以使用如下的正则表达式:
import re
x = "((2+2)-(3+5)-6)"
re.findall(r"(?<=\()[0-9+/*-]+(?=\))", x)
结果:
['2+2', '3+5']
答案 2 :(得分:1)
正则表达式的答案和问题可以在类似的问题中找到:Regular Expression to match outer brackets