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

如何从参数化字符串中提取参数名?Python标准库有没有对应实现?

实现方案

可以直接复用Python标准库string.Template内置的正则匹配逻辑,不需要自行编写正则校验变量名合法性,符合你的需求:

import string

def get_params(param_str: str) -> tuple[str, ...]:
    template = string.Template(param_str)
    params = []
    seen = set()
    # 遍历所有匹配结果,对应分组分别为:转义$、普通命名占位符、大括号包裹占位符、非法格式
    for _, named, braced, _ in template.pattern.findall(param_str):
        if named and named not in seen:
            seen.add(named)
            params.append(named)
        if braced and braced not in seen:
            seen.add(braced)
            params.append(braced)
    return tuple(params)

测试效果

param_str = "I like $thing_I_like and dislike $thing_I_dislike. What does $person_I_like like?"
print(get_params(param_str))
# 输出: ('thing_I_like', 'thing_I_dislike', 'person_I_like')

说明

  • 该方法直接复用string.Template内置的标识符校验规则,自动过滤不符合Python变量命名规范的占位符,无需额外校验逻辑
  • 同时兼容$xxx和${xxx}两种模板占位符写法,重复出现的占位符只会返回一次,顺序和首次出现顺序一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:54:01