如果我有一个字符串
'x+13.5*10x-4e1'
Run Code Online (Sandbox Code Playgroud)
如何将其拆分为以下令牌列表?
['x', '+', '13', '.', '5', '*', '10', 'x', '-', '4', 'e', '1']
Run Code Online (Sandbox Code Playgroud)
目前我正在使用shlex模块:
str = 'x+13.5*10x-4e1'
lexer = shlex.shlex(str)
tokenList = []
for token in lexer:
tokenList.append(str(token))
return tokenList
Run Code Online (Sandbox Code Playgroud)
但这回归:
['x', '+', '13', '.', '5', '*', '10x', '-', '4e1']
Run Code Online (Sandbox Code Playgroud)
所以我试图从数字中分割字母.我正在考虑使用包含字母和数字的字符串然后以某种方式拆分它们,但不确定如何执行此操作或如何将它们全部添加回列表中以及之后的其他字符串.令牌保持有序是很重要的,我不能拥有嵌套列表.
在理想的世界中,e和E不会以相同的方式被识别为字母,因此
'-4e1'
Run Code Online (Sandbox Code Playgroud)
会成为
['-', '4e1']
Run Code Online (Sandbox Code Playgroud)
但
'-4x1'
Run Code Online (Sandbox Code Playgroud)
会成为
['-', '4', 'x', '1']
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?