拆解数学表达式

2024-05-20 17:33:25 发布

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

我正在用Python编写一个调车场程序,遇到了一个数学表达式如“3x+4*y”或“3sin(x)”的问题。在

问题是Python tokenize函数不知道我需要“3x”变成[“3”、“*”x“],而不是仅仅是[“3”,“x”]。当然,我可以规定用户必须输入3*x而不是3x,但这太蹩脚了。应该有一个更干净的方法来解决这个问题。在

以下是我使用的标记化代码(从stackoverflow posting复制):

expression="3x + 4*y"
from io import StringIO
print [token[1] for token in tokenize.generate_tokens (StringIO(expression).readline) if token[1]]

这给了我:

^{pr2}$

但我需要:

[u'3', u'*', u'x', u'+', u'4', u'*', u'y']

为了使调车场代码正常工作。在

谢谢你的帮助。在


Tags: 方法函数代码用户标记程序token表达式