Python code is quite simple here.
Basic idea:

divide the expression into two parts

get the result for the first part and second part

then merge them using another function.
The python code goes as follows,op_dict = {'+':lambda x,y:x+y,'':lambda x,y:xy,'':lambda x,y:xy, '/':lambda x,y:x/y}
class Solution:
# @param {string} input
# @return {integer[]}
# given two list of integers, make a combination result based on op
def combination(self,list1,list2,op):
res = []
for i in list1:
for j in list2:
res += [op_dict[op](i,j)]
return res
# split the expression into two parts, each part use a recursive function to achieve
def rec(self, exp):
try:# consider the condition if exp is just a integer like '1000'
return [int(exp)]
except:
size = len(exp)
if size == 0:
return []
res = []
i = 0
while i < size:
if exp[i] >= '0' and exp[i] <= '9':
i += 1
continue
first = self.rec(exp[:i])
second = self.rec(exp[i+1:])
op = exp[i]
res += self.combination(first,second,op)
i += 1
return res
def diffWaysToCompute(self, input):
res = self.rec(input)
return res