【问题标题】:Named replaces in strings with Mako用 Mako 替换字符串中的命名
【发布时间】:2010-10-06 18:01:50
【问题描述】:

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

我不断收到 SyntaxException: (SyntaxError) unexpected EOF while parsing。有没有办法做同样的事情?

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

谢谢。

【问题讨论】:

  • 当我有不匹配的引号、括号、方括号和/或大括号时,我通常会收到意外的 EOF 或 EOL。
  • 我也是。但我检查了很多次,一切似乎都是正确的。

标签: python mako


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    尝试新的 Python 字符串格式:

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

    它看起来更好,并且是面向未来的。

    【讨论】:

    • 完美运行。非常感谢 =)
    猜你喜欢
    • 2013-06-28
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 2017-03-06
    • 2021-06-19
    • 1970-01-01
    • 2021-05-23
    相关资源
    最近更新 更多