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

正则表达式转换公式变量为命名格式的问题排查与修正

问题与修正方案

需求与问题

需要将Formula_bit中的公式内容转换为小写且单词以下划线分隔的命名格式,处理规则如下:

  • 按运算符(+、-、*、/)或x(乘法)拆分内容
  • 转为小写,空格替换为下划线
  • 移除括号
  • 去除首尾下划线

现有代码输出不符合预期:
当前输出:

['σ_dividends', 'dividend_payout_ratio_,_eps']

预期输出:

['σ_dividends', 'dividend_payout_ratio', 'eps']

错误原因

原代码逻辑混乱:先用re.sub把运算符替换成逗号,再用re.split拆分,但只取了拆分结果的第一个元素[0],导致第二个公式项只处理了前半部分,还把替换的逗号混进了结果里,同时没正确拆分出所有参数。

修正后的代码

import re 
Formula_bit = ['Σ (Dividends)', 'Dividend Payout Ratio * eps']

params = []
for item in Formula_bit:
    # 匹配所有运算符(+、-、*、/、x)及前后空格,拆分参数
    split_parts = re.split(r'\s*[+\-*/x]\s*', item)
    for part in split_parts:
        # 依次执行格式转换操作
        processed_part = part.lower()\
                            .replace(" ", "_")\
                            .replace("(", "")\
                            .replace(")", "")\
                            .strip("_")
        # 过滤空值,避免无效项
        if processed_part:
            params.append(processed_part)

print(params)

代码说明

  1. 拆分参数:用正则\s*[+\-*/x]\s*匹配所有运算符(包含前后可能的空格),将每个公式拆分为独立的参数部分
  2. 格式转换:对每个参数部分依次执行转小写、空格替换为下划线、移除括号、去除首尾下划线的操作
  3. 过滤空值:避免拆分后产生的空字符串被加入结果列表

运行后输出:

['σ_dividends', 'dividend_payout_ratio', 'eps']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:20:24