python3.4中的 Template

  • 内容
  • 评论
  • 相关



from string import Template


  • $$ 是需要规避,已经采用一个单独的 $代替($$相当于输出$,而不是变量)
  • $identifier 变量由一个占位符替换(key),key去匹配变量 "identifier"
  • ${identifier}相当于 $identifier. 它被用于当占位符后直接跟随一个不属于占位符的字符,列如 "${noun}ification"


class string.Template(template)
The constructor takes a single argument which is the template string.

substitute(mapping, **kwds)
Performs the template substitution, returning a new string. mapping is any dictionary-like object with keys that match the placeholders in the template. Alternatively, you can provide keyword arguments, where the keywords are the placeholders. When both mapping and kwds are given and there are duplicates, the placeholders from kwds take precedence.

safe_substitute(mapping, **kwds)
Like substitute(), except that if placeholders are missing from mapping and kwds, instead of raising a KeyError exception, the original placeholder will appear in the resulting string intact. Also, unlike with substitute(), any other appearances of the $ will simply return $ instead of raising ValueError.

While other exceptions may still occur, this method is called “safe” because substitutions always tries to return a usable string instead of raising an exception. In another sense, safe_substitute() may be anything other than safe, since it will silently ignore malformed templates containing dangling delimiters, unmatched braces, or placeholders that are not valid Python identifiers.


s1 = Template('$who likes $what')
print(s1.substitute(who='tim', what='kung pao'))

s2 = Template('${who}likes $what')
print(s2.substitute(who='tim', what='kung pao'))

s3 = Template('$$who likes $what')
print(s3.substitute(who='tim', what='kung pao'))


tim likes kung pao
timlikes kung pao
$who likes kung pao


d = dict(who='java')
print(Template('$who need $100').safe_substitute(d))
print(Template('$who need $100').substitute(d))


java need $100
Traceback (most recent call last):