如何将MAP中的值替换为Python中的字符串模板

时间:2014-08-04 14:57:11

标签: python python-2.7 python-3.x

我有一个带占位符的字符串。我想替换占位符的值,这些值存储在MAP(字典)中。我正在使用以下代码

from string import Template

values = {'what': 'surreal', 'punctuation': 'is'}
t = Template(" Hello, $what world $punctuation One of Python least-used functions is ")
t.substitute(values)

print t

这要给我正确的结果

我的输出应该是:

Hello, surreal world is One of Python least-used functions is

你能否就如何做到这一点给我意见?

2 个答案:

答案 0 :(得分:1)

我建议使用像Genshi这样的模板引擎。 这为您提供了更大的灵活性,以及​​它们的设计目的: - )

基于http://genshi.edgewall.org/wiki/Documentation/0.6.x/templates.html的Genshi示例:

>>> from genshi.template import TextTemplate
>>> tmpl = TextTemplate('Hello, ${dict.what} world ${dict.punctuation} One of Python least-used functions is')
>>> stream = tmpl.generate(dict={'what':'surreal', 'punctuation':'is'})
>>> print(stream)
Hello, surreal world is One of Python least-used functions is

使用genshi.template.MarkupTemplate创建一些标记也很容易。

我还建议将模板与代码分开,您可以使用类似文件的对象TextTemplateMarkupTemplate

答案 1 :(得分:1)

您可以使用string format作为示例:

values = {'what': 'surreal', 'punctuation': 'is'}
template=" Hello, {what} world {punctuation} One of Python least-used functions is "
t = template.format(**values)
print(t)
# Hello, surreal world is One of Python least-used functions is