且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Python:正则re.sub实现简易的模板引擎

更新时间:2022-08-22 14:37:16

代码实现

# -*- coding: utf-8 -*-
import re


class Template(object):
    pattern = r"\{(\w+)\}"

    def __init__(self, template):
        self.template = template
        self.re_pattern = re.compile(self.pattern)

    def compile(self, **kwargs):
        def foo(mo):
            return kwargs[mo.group(1)]

        return self.re_pattern.sub(foo, self.template)


if __name__ == '__main__':
    t = Template('/student/{uid}/{name}')

    data = {
        "uid": '1',
        "name": "Tom"
    }

    print(t.compile(**data))
    # /student/1/Tom