命名用Mako替换字符串

时间:2010-10-06 18:01:51

标签: python mako

在Mako中创建模板时,我需要编写类似:${_('Hello, %(fname)s %(lname)s') % {'fname':'John','lname':'Doe'}}

的内容

在编写时,我一直在解析 SyntaxException :( SyntaxError)意外的EOF。有没有办法做同样的事情?

${_('Hello, %s %s') % ('John', 'Doe')}有效,但如果需要,它不允许在更改语言时更改替换顺序。

感谢。

2 个答案:

答案 0 :(得分:2)

在Mako的{}中使用${}很复杂;显然,Mako在找到第一个}后停止解析表达式。可能的解决方法是使用dict()代替{}

${_('Hello, %(fname)s %(lname)s') % dict(fname='John', lname='Doe')}

答案 1 :(得分:0)

尝试新的Python字符串格式:

>>> "{foo} {bar}".format(foo="foo", bar="bar")
'foo bar'
>>> "{foo} {bar}".format(**{"foo": "Hello", "bar": "World!"})
'Hello World!'

它看起来更好,并且具有前瞻性。