在括号之间插入乘法符号

时间:2018-11-09 14:50:53

标签: python regex python-3.x multiplication parentheses

假设您具有以下字符串:

  

5 + 5(5)

我想在5和(5)之间插入一个乘法符号

  

5 + 5 *(5)

现在还假设您还有以下其他可能性:

  

5+(5)(5)

我想在(5)和(5)之间插入一个乘法符号

  

5+(5)*(5)

我的尝试

import re

ex1 = '4+6.9(39.3)(-2.3)(5+4)'

def convert(string):

  return re.sub(r"((?:\d+)|(?:[a-zA-Z]\w*\(\w+\)))((?:[a-zA-Z]\w*)|\()", r"\1*\2", string)

print(convert(ex1))
  

4 + 6.9 *(39.3)(-2.3)(5 + 4)

此代码仅将乘法添加到第一个实例。

如果字符串是:

ex2 = '5(5)+5(5)+5(5)'
  

5 *(5)+ 5 *(5)+ 5 *(5)

该代码适用于括号前的数字。

如何修改代码以在打开的括号之前包含封闭的括号?

2 个答案:

答案 0 :(得分:4)

您可以在正后方使用

import re

a = '4+6.9(39.3)(-2.3)(5+4)'

print(re.sub('(?<=\d|\))(\()', '*(', a))
#4+6.9*(39.3)*(-2.3)*(5+4)

答案 1 :(得分:0)

如果我理解正确,则需要在出现“(”的地方插入“ *”符号。

在这种情况下,这将为您提供所需的内容:

ex1 = '4+6.9(39.3)(-2.3)(5+4)'
print(''.join(['*' + x if x == '(' else x for x in ex1]))
#4+6.9*(39.3)*(-2.3)*(5+4)