【发布时间】:2021-01-23 12:06:28
【问题描述】:
我有一个格式为的字符串
exp = '(( 200 + (4 * 3.14)) / ( 2 ** 3 ))'
我想使用re.split() 将字符串分隔为标记,并包含分隔符。但是,我无法将** 拆分在一起,最终被* 拆分。
这是我的代码:tokens = re.split(r'([+|-|**?|/|(|)])',exp)
我的输出(错误):
['(', '(', '200', '+', '(', '4', '*', '3.14', ')', ')', '/', '(', '2', '*', '*', '3', ')', ')']
我想问有没有办法在* 和** 之间拆分分隔符?非常感谢!
期望的输出:
['(', '(', '200', '+', '(', '4', '*', '3.14', ')', ')', '/', '(', '2', '**', '3', ')', ')']
【问题讨论】:
-
丑陋但简单:首先将“**”替换为任何不能像下划线一样出现的单个字符。然后拆分,稍后将其替换回来
-
@PabloHenkowski 哦,是的,我从没想过!非常感谢!
-
试试这个正则表达式:
r'(\*\*|\*|\+|-|/|\(|\))'(请参阅ast模块以获得更好的选择)stackoverflow.com/questions/5049489/… -
@VPfB 是的,这行得通!非常感谢!