【发布时间】:2021-09-15 03:56:43
【问题描述】:
我有一个用 Node.js 实现的应用程序,它具有呈现文本模板的功能:
function render(template, args) {
// ...
}
render('${ foo.bar }, ${ baz }!', { foo: { bar: 'Hello' }, baz: 'World' });
// Hello, World!
在 Node.js 中,我使用一个流行的库 lodash.template 来实现这一点。
lodash.template('${ foo.bar }, ${ baz }!')({ foo: { bar: 'Hello' }, baz: 'World' });
// Hello, World!
现在我需要将此实现迁移到 Python3。我找到了一个类似的解决方案,它使用了 builin string 模块:
from string import Template
Template('${foo}, ${bar}!').substitute({'foo': 'Hello', 'bar': 'World!'})
# Hello, World!
Template('${foo}, ${bar.baz}!').substitute({'foo': 'Hello', 'bar': { 'baz': 'World!' }})
# ValueError: Invalid placeholder in string
但是,似乎内置 python string.Template 不支持 dot 访问 dict 子属性。
用户提供的数据库中已经保存了很多模板,所以现在我无法更新语法规则。
有没有办法解决这个问题?
【问题讨论】:
标签: javascript python templates