You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将字符串内的函数调用替换为对应属性

解决方案

核心思路

用正则表达式精准匹配函数调用格式,将函数名(任意参数)的结构统一替换为函数名.latex,不管括号内参数的数量、长度如何,都能一次性完成替换。

具体实现(Python)

import re

# 原始表达式字符串
EL0 = '100000*Assurance_WL(55) - 2000*Annuity_WL(55, 0.065) + (1500 + 3000)/0.95'

# 正则替换:匹配目标函数调用,替换为对应.latex属性
latex_expr = re.sub(r'(Assurance_WL|Annuity_WL)\(.*?\)', r'\1.latex', EL0)

print(latex_expr)
# 输出:100000*Assurance_WL.latex - 2000*Annuity_WL.latex + (1500 + 3000)/0.95

代码解释

  • 正则模式r'(Assurance_WL|Annuity_WL)\(.*?\)':
    • (Assurance_WL|Annuity_WL):捕获组,精准匹配两个目标函数名中的任意一个
    • \(:转义匹配左括号(括号在正则中属于特殊字符)
    • .*?:非贪婪匹配,覆盖括号内所有参数内容(直到遇到第一个右括号\)为止)
  • 替换模板r'\1.latex':\1引用捕获到的函数名,拼接.latex完成替换

复杂场景拓展

如果函数调用存在嵌套括号(比如Assurance_WL(55, calculate_rate(0.04))),基础正则会失效,这时可以用支持平衡组的第三方库regex实现递归匹配:

import regex

latex_expr = regex.sub(r'(Assurance_WL|Annuity_WL)\((?:[^()]|(?R))*\)', r'\1.latex', EL0)

该模式可以递归识别嵌套括号结构,覆盖更复杂的表达式场景。

内容的提问来源于stack exchange,提问作者TroubleMaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 06:24:02