Skip to main content
 首页 » 编程设计

python之将隐含乘法 (*) 添加到 Python 字符串的最佳方法

2025年05月04日63mate10pro

我知道如何在使用 RegEx 的其他语言中执行此操作,但我不确定 Python。基本上我想做的是转换

(30(5-10x))+10=20 

进入

(30*(5-10x))+10=20 

如果能加上

(30*(5-10*x))+10=20 

如果 x 前面有数字。

在 Perl 中,正则表达式看起来像

/ \w+\K (?=\() | \)\K (?=\w) | \)\K (?=\() /*/ 

并照顾 x:

/\d\K(?=[x])/*/ 

这在 Python 中如何最好地完成?

请您参考如下方法:

我更喜欢它,就像 Nate 所做的那样,即只需添加 *,而不是将周围的字符取出然后再将它们放回去。

>>> e = '(1+2)(30(5-10x))x+10=20' 
>>> re.sub('(?<=\w|\))(?=\() | (?<=\))(?=\w) | (?<=\d)(?=x)', '*', e, flags=re.X) 
'(1+2)*(30*(5-10*x))*x+10=20' 

这三个部分是“之前(”),“之后)”,“数字和x之间”。可能会合并,但那样我们可能会合并太多,所以我觉得这样更清晰、更安全。