使用 python 模板字符串类渲染列表

我想使用Template从列表开始的字符串类。我开始于:

from string import Template
temp = Template('-* $item - \n')
items = ["alpha", "beta", "gama"]
subs = ''.join([temp.substitute(item) for item in items])

这会失败,因为它需要字典而不是列表。

结果应该是:

-* alpha -
-* beta -
-* gama -

一些限制:

  • 我知道可以使用它来完成,append但我想要传递模板的灵活性,其中一些比示例中的更复杂

  • 应该适用于 python2 和 3

  • 理想情况下会更像 jinja2 或 django 模板渲染,但不幸的是我无法添加第三方包,此外我只需要变量和列表替换。


慕侠2389804
浏览 94回答 2
2回答

慕妹3146593

substitute需要知道$item模板中的占位符应该替换为什么,因此要么提供一个映射字典:subs = ''.join([temp.substitute({'item': item}) for item in items])或者,正如 @Rfroes87 在评论中提到的,item作为 kwarg 传递:subs = ''.join([temp.substitute(item=item) for item in items])

Qyouu

尝试字符串格式化而不是模板,它甚至可能具有相同的后台引擎subs = ''.join(['-* %s - \n' % item for item in items])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python