Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在括号之间插入乘法符号_Python_Regex_Python 3.x_Multiplication_Parentheses - Fatal编程技术网

Python 在括号之间插入乘法符号

Python 在括号之间插入乘法符号,python,regex,python-3.x,multiplication,parentheses,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*

假设您有以下字符串:

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)

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


如何修改代码,使其在开放括号之前包含闭括号?

您可以使用正向查找:

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)
重新导入
a='4+6.9(39.3)(-2.3)(5+4)'

打印(re.sub)(“(?如果我理解正确,您需要在出现“(”的地方插入“*”符号

如果是这种情况,这将为您提供所需:

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)

使用
string=re.sub(r'(?这是否适用于嵌套的括号?@timgeb我不确定我能想出一个表达式,其中
)(
的意思不是
)*(
嵌套与否…@anubhava有一件事,负查找将在开括号之前插入
*
,即使它位于字符串的开头,这就是为什么我使用正查找右括号或数字的原因。