扩展Python模板字符串

时间:2017-12-12 13:08:36

标签: python template-strings

是否可以扩展Template strings,以便我可以向标识符添加方法:

默认情况下,我可以替换简单变量:

from string import Template
t = Template("${noun}ification")
t.substitute(dict(noun='Egg'))  # Output: 'Eggification'

但我希望使用自定义方法扩展标识符(例如as_b):

t = Template("${noun.as_b}ification")  # Desired output: '<b>Egg</b>ification'

我知道我可以轻松地使用Formatted string literals做类似的事情但是可以使用模板字符串,如上所述吗? 我不能使用Formatted字符串文字,因为它不能在脚本,JSON文件或任何包含花括号的文本中工作。

基本上我正在寻找可以在格式化字符串文字灵活性中提供模板字符串语法的内容。

2 个答案:

答案 0 :(得分:2)

不是直接的答案,但我建议不要使用模板字符串。

如果您使用的是Python 3.6或更高版本,请使用f-strings:

ClientB Terminating
运行时

def bold(t):
    return f"<b>{t}</b>"

noun = 'Egg'

print(f"{bold(noun)}ification")

如果您更喜欢更强大的模板机制,我强烈推荐Jinja2

答案 1 :(得分:-1)

Genshi正是如此,但它似乎没有使用内置的string模块。
其他有用的参考文献是ChameleonMako