使用findall()方法解析一个简单的数学方程

时间:2019-02-23 00:25:44

标签: python regex

如何使用findall()方法解析数学方程式?

例如,如果我有一个方程8x> = 4 + 2y + 10z

这是我的编码

import re
equations = '8x >= 4 + 2y + 10z'
regexparse = r'\w+|[+/*-]'
result = re.findall(regexparse, equations)
print(result)

输出为

['8x', '4', '+', '2y', '+', '10z']

相反,我希望得到以下结果:

[('','8','x','>='),('','4','',''),('+','2','y',''),('+','10','z','')]

1 个答案:

答案 0 :(得分:1)

如果您想re.findall返回4元组的列表,则应该使用4个捕获组:

result = re.findall(r'(?=\S)([-+*/])?\s*(\d+)?\s*([a-z]+)?\s*([<>]?=)?', equations)

鉴于您的示例输入equations = '8x >= 4 + 2y + 10z'result将变为:

[('', '8', 'x', '>='), ('', '4', '', ''), ('+', '2', 'y', ''), ('+', '10', 'z', '')]