Benannt ersetzt in Strings mit Mako
Frage
Wenn Sie eine Vorlage in Mako zu schaffen, würde ich schreiben müssen, um Dinge wie: ${_('Hello, %(fname)s %(lname)s') % {'fname':'John','lname':'Doe'}}
Ich erhalte SyntaxException: (Syntaxerror) unerwartet EOF beim Parsen , wenn das Schreiben. Gibt es wny Möglichkeit, das gleiche?
zu tun ${_('Hello, %s %s') % ('John', 'Doe')}
funktioniert, aber es ist nicht die Reihenfolge des Ersatzes zu ändern, wenn die Sprache zu ändern, falls erforderlich.
Danke.
Lösung
Versuchen Sie, die neue Python-String Formatierung:
>>> "{foo} {bar}".format(foo="foo", bar="bar")
'foo bar'
>>> "{foo} {bar}".format(**{"foo": "Hello", "bar": "World!"})
'Hello World!'
Es sieht schöner und ist zukunftssicher.
Andere Tipps
Mit {}
innerhalb Makos ${}
ist kompliziert; offenbar stoppt Mako die Ausdrucksanalyse nach dem ersten }
zu finden. Eine mögliche Abhilfe ist dict()
statt {}
zu verwenden:
${_('Hello, %(fname)s %(lname)s') % dict(fname='John', lname='Doe')}