2010-10-06 8 views
0

Lors de la création d'un modèle à Mako, je aurais besoin d'écrire des choses comme: ${_('Hello, %(fname)s %(lname)s') % {'fname':'John','lname':'Doe'}}remplace nommés dans les chaînes avec Mako

Je continue à obtenir SyntaxException: (SyntaxError) EOF inattendu lors de l'analyse lors de l'écriture que. Y a-t-il une façon de faire la même chose?

${_('Hello, %s %s') % ('John', 'Doe')} fonctionne, mais ne permet pas de changer l'ordre des remplacements lors du changement de langue, si nécessaire.

Merci.

+0

Je reçois souvent inattendu EOF ou EOL quand j'ai des guillemets non, entre parenthèses, crochets, et/ou des accolades. – PaulMcG

+0

Moi aussi. Mais j'ai vérifié plusieurs fois, et tout semble correct. – Pierre

Répondre

0

Essayez la nouvelle mise en forme de chaîne Python:

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

Il semble plus agréable et est tournée vers l'avenir.

+0

Fonctionne parfaitement. Merci beaucoup =) – Pierre

2

L'utilisation de {} à l'intérieur de ${} de Mako est compliquée; apparemment Mako cesse d'analyser l'expression après avoir trouvé le premier }. Une solution possible est d'utiliser dict() au lieu de {}:

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