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

Python字符串Template带重音字符键替换失败问题求助

解决string.Template无法处理带重音字符键的问题

问题根源在于Python标准库的string.Template默认只允许ASCII字母、数字和下划线作为键名的合法字符(默认idpattern为[a-z_][a-z0-9_]*,不区分大小写),带重音的Unicode字符不在匹配范围内,因此无法完成替换。

解决方案:自定义Template子类扩展键名规则

通过继承Template并重写idpattern属性,将Unicode字母纳入合法键名的匹配范围,即可支持带重音的键。

示例代码:

from string import Template

class UnicodeTemplate(Template):
    # 匹配Unicode字母/下划线开头,后续可跟Unicode字母、数字、下划线
    idpattern = r'[^\d\W][\w]*'

# 测试使用
d = {'vérité': 'truth'}
msg = 'je veux la ${vérité}'
msg = UnicodeTemplate(msg).safe_substitute(**d)
print(msg)  # 输出: je veux la truth

说明

  • [^\d\W]表示匹配非数字、非非单词字符(即Unicode字母或下划线),确保键名首字符符合规则
  • [\w]*表示匹配任意长度的Unicode字母、数字或下划线,覆盖键名的后续字符
  • 该方案支持所有Unicode字母(包括带重音的字符如é、à、ñ等),无需手动指定特定重音范围

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:43:14