[小白提问]复杂字典/数组赋值给模板

Python初学者,问题很小白,请大神指点

场景:
一个大数组,里面有工作角色以及这个角色在各个阶段需要进行的培训内容(包括名字,简介,各种细节信息)
现在,要为每个角色制作一个页面来展示他们需要学习的培训信息。

原先我用php的时候,就是在工作角色基本信息直接赋值进模板,培训内容部分在模板里面写循环。
Python这块也是类似吗,还是在python代码里循环好,再拼接字符串?

因为我太小白了,估计是搜索关键字也不太对,所以网上也没找到什么有价值的信息,求大神指点方向。

讨论数量: 9

也是同理的。

3周前 评论
Helen2022 (楼主) 3周前
Helen2022 (楼主) 3周前

valuess = {{'var': 'foo11','test':'11'},{'var': 'foo22','test':'22'},{'var': 'foo33','test':'33'},{'var': 'foo44','test':'44'}}

s=“”“ {% for item in valuess %} {{item}} {% endfor %}”“”

print('FORMAT:', s.format(**valuess))

这样一直报错

3周前 评论
sinmu 3周前
Helen2022 (作者) (楼主) 3周前
Helen2022 (作者) (楼主) 3周前
sinmu 3周前
Jason990420

Example Code

import re


class Template():

    def __init__(self, template):
        self.template = template

    def repl(self, match, item):
        text = match.group(1)
        return str(item[text]) if text else "$"

    def format(self, values):
        self.values = values
        lines = []
        for item in values:
            lines.append(
                re.sub(r"\$(.*?)\$",
                lambda match, item=item:self.repl(match, item),
                self.template,
                re.MULTILINE)
            )
        return "\n".join(lines)


template = Template("$var$ - $test$")

values = [
    {'var': 'foo11','test':'11'},
    {'var': 'foo22','test':'22'},
    {'var': 'foo33','test':'33'},
    {'var': 'foo44','test':'44'},
]

print(template.format(values))
foo11 - 11
foo22 - 22
foo33 - 33
foo44 - 44
3周前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!