如何使用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','')]
答案 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', '')]