0

csv ファイルを 経由csv.DictReaderで Mako に渡しています。ディクショナリはキーに行ヘッダーを使用します。これらの一部には、「エントリ ID」などの名前が付いています。テンプレートでこれらの複数単語のキーを参照しようとすると、Mako でエラーが発生します。具体的には、エラー メッセージは次のとおりですmako.exceptions.SyntaxException: (SyntaxError) invalid syntax (<unknown>, line 1)

次のコードは、私が経験している問題を示しています。

from mako.template import Template

mydata = {'foo': 'bar', 'better foo': 'beach bar'}
working_template = Template("Let's go to the ${foo}")
fail_template = Template("Let's go to the ${better foo}")

# this works
print working_template.render(**mydata)
# this generates an Exception
print fail_template.render(**mydata)

複数単語キーのスペースをエスケープする方法はありますか?

4

1 に答える 1

0

うまくいく方法を 1 つ見つけましたが、できれば辞書を **kwargs として送信したいと思います。実用的なソリューションは次のとおりです。

from mako.template import Template

mydata = {'foo': 'bar', 'better foo': 'beach bar'}
working_template = Template("Let's go to the ${foo}")
fail_template = Template("Let's go to the ${mydata['better foo']}")

print working_template.render(**mydata)
print fail_template.render(mydata=mydata)
于 2012-11-14T15:04:46.840 に答える