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