将表达式转换为列表

我想在不使用 Python 和正则表达式的内置函数的情况下将字符串表达式转换为列表。

这是示例:

"(52^2)+150-(2^2+4+5)"

到:

["(", "52", "^", "2", ")", "+", "150", "-", "(", "2", "^", "2", "+", "4", "+", "5", ")"]

我用过.split()但9以上的数字是分开的。

回答

你可以tokenize像这样使用:

>>> from io import StringIO
>>> import tokenize

>>> formula = "(52^2)+150-(2^2+4+5)"
>>> print([token[1] for token in tokenize.generate_tokens(StringIO(formula).readline) if token[1]])
['(', '52', '^', '2', ')', '+', '150', '-', '(', '2', '^', '2', '+', '4', '+', '5', ')']


以上是将表达式转换为列表的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>