将表达式转换为列表
我想在不使用 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', ')']