正则表达式以解析方程式

时间:2019-02-13 22:54:41

标签: python regex

我正在尝试解析

等式
  

5x> = 7-5y + 4z

使用python进入元组列表:

[('', '5', 'x', '>='), ('', '7', '', ''), ('-', '5', 'y', ''), ('+', '4', 'z', '')]

我设法写了一个模式(pattern = "[+-]?\d*[a-z]?[><=]*")将等式分成几组,但是我不知道如何使它返回元组。 任何帮助表示赞赏...

1 个答案:

答案 0 :(得分:2)

我想你想要这个:

import re

pattern = re.compile(r'([+-]?)([0-9]+)([a-z]?)([><]?=?)')
re.findall(pattern, '5x>=7-5y+4z')

>>> [('', '5', 'x', '>='), ('', '7', '', ''), ('-', '5', 'y', ''), ('+', '4', 'z', '')]

传递给re.findall的每个正则表达式实例都放入一个元组,然后进一步分成对应于该正则表达式中每个组的字符串。

由于我不确定其他情况下的预期输出是什么(例如,会有一个0x这个词?),我对实际的正则表达式进行了一些解释。