首页 > 解决方案 > 将表达式转换为列表

问题描述

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

这是一个例子:

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

至:

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

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

标签: pythonpython-3.xlist

解决方案


你可以这样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', ')']

推荐阅读