Python中元组列表的解析公式

2024-03-29 04:39:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我想解析方程,得到一个元组列表。 例如,当我进入

2x = 4+3y, 

我想得到

[('', '2', 'x', '='), ('','4','',''), ('+','3','y','')]

到目前为止,这是我的正则表达式:

([+-]*)([0-9]+)([a-z]*)([<=>]*)

对于上面的查询,它可以很好地工作,但是它不捕获像

2 = x +3y,(其中x没有任何系数)

我该如何捕捉?你知道吗


Tags: 列表元组方程系数
2条回答
(\d*)(\w*) *(=) *(\d*)(\w*) *[+|\-|*|/] *(\d*)(\w*)

这个正则表达式怎么样?你知道吗

它分隔所有操作数和运算符。(在操作数内部,它还拆分数字和变量)。你知道吗

为了测试regex,我通常使用https://regex101.com/,这样就可以在那里构建带有实时更改的regex。

如果你把系数上的量词从+(一个或多个)改为*(零个或多个),那么你应该得到你想要的结果。由于现在所有的量词都是*,您还将得到一个空字符串匹配,但是您可以过滤掉该匹配。你知道吗

>>> import re
>>> e1 = "2x=4+3y"
>>> e2 = "2=x+3y"
>>> re.findall("([+-]*)([0-9]*)([a-z]*)([<=>]*)", e1)
[('', '2', 'x', '='), ('', '4', '', ''), ('+', '3', 'y', ''), ('', '', '', '')]
>>> re.findall("([+-]*)([0-9]*)([a-z]*)([<=>]*)", e2)
[('', '2', '', '='), ('', '', 'x', ''), ('+', '3', 'y', ''), ('', '', '', '')]

注意:虽然这解决了你的直接问题,但这不是解析中缀方程的好方法。你知道吗

相关问题 更多 >