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

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

代码实现

# -*- 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
相关文章
|
9月前
|
Python
python re.sub 替换不完全
python re.sub 替换不完全
44 0
|
11月前
|
自然语言处理 安全 编译器
用 Python 编写一个模板引擎(下)
用 Python 编写一个模板引擎
69 0
|
11月前
|
自然语言处理 编译器 Python
用 Python 编写一个模板引擎(上)
用 Python 编写一个模板引擎
93 0
|
1月前
|
前端开发 数据库 开发者
构建可维护的Web应用:Python模板引擎与ORM的协同工作
【7月更文挑战第19天】在Web开发中,可维护性至关重要。Python搭配Flask或Django框架,利用模板引擎(如Jinja2)和ORM(如SQLAlchemy或Django ORM)增强开发效率和代码质量。模板引擎桥接前后端,ORM简化数据库操作,两者协同提升可读性和可测试性。例如,Flask用Jinja2渲染动态HTML,Django通过ORM处理数据库模型。这种分离关注点的方法降低了耦合,增强了应用的可维护性。
27 1
|
30天前
|
前端开发 JavaScript 数据处理
深入Python Web开发:模板引擎的力量与最佳实践
【7月更文挑战第21天】Python Web开发中,模板引擎如Jinja2促进MVC架构的View层,分离后端数据与前端展示,提升开发效率和代码复用。选择适合的模板引擎,利用其数据注入、模板继承等特性,保持模板简洁,注重安全性,是最佳实践。例如,Jinja2允许在HTML中嵌入变量并处理循环,简化渲染过程。
28 0
|
1月前
|
前端开发 开发者 Python
从零到一:Python Web框架中的模板引擎入门与进阶
【7月更文挑战第20天】模板引擎如Jinja2在Python Web开发中连接后端与前端,提高代码可读性和协作效率。Flask默认集成Jinja2,提供条件语句、循环、宏和模板继承等功能。例如,创建一个简单Flask应用,渲染"Hello, World!",并展示如何使用条件语句和循环处理数据。通过宏定义重用代码,模板继承实现页面结构共享。学习模板引擎能提升开发效率和项目质量。
27 0
|
1月前
|
SQL 前端开发 数据库
Python Web开发进阶之路:从模板引擎到ORM的全面掌握
【7月更文挑战第19天】在Python Web开发中,提升技能的关键是理解和运用模板引擎(如Jinja2)与ORM技术。模板引擎,如在Flask中使用的Jinja2,使前端HTML与后端逻辑分离,便于维护。例如,通过路由函数`show_posts()`和`render_template()`呈现文章列表模板,用Jinja2的`for`循环展示内容。ORM,如SQLAlchemy,提供Pythonic的数据库操作,将表映射为类,SQL转化为方法调用。在博客系统中,定义Post模型并与数据库交互,展示了ORM简化数据管理的优势。通过实践这些工具,开发者能更好地驾驭复杂的Web项目。
37 0
|
3月前
|
Python
python小案例-re正则
python小案例-re正则
|
3月前
|
机器学习/深度学习 算法 算法框架/工具
【Python机器学习专栏】深度学习中的正则化与优化技术
【4月更文挑战第30天】本文探讨了深度学习中的正则化和优化技术,以提升模型的泛化能力和训练效率。正则化包括L1和L2正则化以及Dropout,防止过拟合。优化技术涵盖梯度下降法、动量法和Adam优化器,加速模型收敛。Python示例展示了如何在Keras中应用这些技术,如L2正则化、Dropout及Adam优化器。
80 0
|
3月前
|
XML 缓存 API
Python 模板引擎 Jinja2 的安装和使用
Python 模板引擎 Jinja2 的安装和使用
120 0