python - 将表达式转换为列表
问题描述
我想在不使用 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', ')']
推荐阅读
- googleplacesautocomplete - 需要在 Google Place Autocomplete 中获取英文地名
- django - Django 使用中间件设置 cookie 在第一页加载时失败
- electron - 带有私有 GitHub 存储库的电子自动更新器?
- django - 如何将通用视图转换为具有模式列表的基于类的视图
- excel - VBA 使用子参数中的值填充不同的对象
- node.js - 托管使用 ExpressJS 进行后端操作的 REACT 应用程序的步骤是什么?
- c# - 程序找不到路径部分视图
- postgresql-8.2 - 如何将多个函数保存为 Postgresql 中的每个文件(* .sql)?
- c - 为什么 fread() 函数没有到达文件末尾并且循环无限地继续,同时从文件中读取结构?
- http - 如何限制 IBM Integration Bus 中每个 IP 地址的 HTTP 请求数?