如何在 Python 中拆分重复的分隔符
How to split duplicated separator in Python
我有一个格式为
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', ')', ')']
使用 [...] 符号只允许您指定单个字符。要获得可变大小的替代模式,您需要使用 |这些括号之外的运算符。这也意味着您需要转义正则表达式运算符,并且需要将较长的模式放在较短的模式之前(即 ** 在 * 之前)
tokens = re.split(r'(\*\*|\*|\+|\-|/|\(|\))',exp)
甚至更短:
tokens = re.split(r'(\*\*|[*+-/()])',exp)
我有一个格式为
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', ')', ')']
使用 [...] 符号只允许您指定单个字符。要获得可变大小的替代模式,您需要使用 |这些括号之外的运算符。这也意味着您需要转义正则表达式运算符,并且需要将较长的模式放在较短的模式之前(即 ** 在 * 之前)
tokens = re.split(r'(\*\*|\*|\+|\-|/|\(|\))',exp)
甚至更短:
tokens = re.split(r'(\*\*|[*+-/()])',exp)