我正在尝试解析
等式5x> = 7-5y + 4z
使用python进入元组列表:
[('', '5', 'x', '>='), ('', '7', '', ''), ('-', '5', 'y', ''), ('+', '4', 'z', '')]
我设法写了一个模式(pattern = "[+-]?\d*[a-z]?[><=]*"
)将等式分成几组,但是我不知道如何使它返回元组。
任何帮助表示赞赏...
答案 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
这个词?),我对实际的正则表达式进行了一些解释。