如何拆分空格分隔的数学运算符?

时间:2015-06-03 00:42:36

标签: python

我有一个用户计算器,它接受数字和用户定义的变量。我的计划是将声明拆分为以空格分隔的运算符,例如'+':

import re
query = 'house-width + 3 - y ^ (5 * house length)'
query = re.findall('[+-/*//]|\d+|\D+', query)
print query  # ['house-width + ', '3', ' - y ^ (', '5', ' * house length)']

Expecting:
['house-width', '+', '3', '-', 'y', '^', '(5', '*', 'house length)']

1 个答案:

答案 0 :(得分:4)

使用re.split在分割模式周围捕获括号似乎相当有效。只要你在模式中有捕获的parens,你分裂的模式就会保留在结果列表中:

re.split(' ([+-/*^]|//) ', query)
Out[6]: ['house-width', '+', '3', '-', 'y', '^', '(5', '*', 'house length)']

(PS:我假设从你的原始正则表达式中你想要捕获//整数除法运算符,你不能用单个字符类做到这一点,所以我已经移动了作为特例,在字符类之外。)