当前位置: 首页 > news >正文

Python 第三方库:Markdown(将文本渲染为 HTML)

markdown 是一个流行的第三方 Python 库,用于将 Markdown 标记语言转换为 HTML。它是众多文档系统、博客平台(如 MkDocs、Pelican、Jupyter Notebook)底层的核心渲染引擎之一。

通过 markdown 库,你可以轻松地将 Markdown 文件或字符串内容转换为标准 HTML 网页,也可通过插件系统自定义语法、样式与输出结构。

安装:

pip install markdown

常见应用场景:

(1)Markdown → HTML 渲染

将 Markdown 格式的文档、博客内容、安全文本等转换为 HTML。

(2)自定义扩展支持

支持多种内置或第三方扩展,如表格、目录(TOC)、代码高亮、脚注等。

(3)文档系统构建

用于构建静态网站、帮助文档、WYSIWYG 编辑器后端等。

(4)与 Web 框架集成

可在 Flask、Django、FastAPI 等中集成,实现 Markdown 文章即时渲染。

  ◆  ◆

核心概念

1、Markdown 文本

一种轻量级标记语言,用于快速书写格式化文档(标题、列表、链接、代码等)。

2、HTML 渲染

markdown.markdown() 是核心函数,将 Markdown 文本转换为 HTML 字符串。

3、扩展机制(Extensions)

提供强大的插件系统,可启用额外语法,如表格、目录、数学公式等。

4、安全性控制

输出 HTML 可选择安全模式或自行过滤,以防止 XSS 攻击。

5、Markdown 实例(Markdown class)

除简单转换外,也可以通过 Markdown() 对象进行多次渲染、状态管理与配置扩展。

  ◆  ◆

应用举例

例 1:基本 Markdown 转换为 HTML

import markdown
text = """# 欢迎使用 Markdown
这是一个 **加粗** 的文本示例。"""
html = markdown.markdown(text)print(html)

输出:

<h1>欢迎使用 Markdown</h1><p>这是一个 <strong>加粗</strong> 的文本示例。</p>

例 2:启用扩展(如表格与代码高亮)

import markdown
text = """| 姓名 | 分数 || ---- | ---- || 张三 | 90   || 李四 | 85   |
```pythonprint("Hello Markdown!")

例 3:生成带目录(TOC)的 HTML 文档

import markdown
text = """# 第一章内容一
## 小节 1.1内容二
## 小节 1.2内容三"""
html = markdown.markdown(text, extensions=["toc"])print(html)

toc 扩展会自动生成锚点目录,可配合网页模板实现自动导航。

例 4:在 Flask 中渲染 Markdown 网页

from flask import Flask, render_template_stringimport markdown
app = Flask(__name__)
@app.route("/")def index():    text = "# Hello Flask + Markdown\n这是 **动态渲染** 的内容。"    html = markdown.markdown(text)    return render_template_string("<html><body>{{ html|safe }}</body></html>", html=html)
if __name__ == "__main__":    app.run(debug=True)

运行后访问 http://localhost:5000/,即可看到 Markdown 渲染结果。

例 5:使用自定义扩展类

from markdown.extensions import Extensionfrom markdown.preprocessors import Preprocessorimport re, markdown
class UppercaseExtension(Extension):    def extendMarkdown(self, md):        md.preprocessors.register(UppercasePreprocessor(md), 'uppercase', 175)
class UppercasePreprocessor(Preprocessor):    def run(self, lines):        return [line.upper() for line in lines]
text = "hello markdown"html = markdown.markdown(text, extensions=[UppercaseExtension()])print(html)

输出:

<P>HELLO MARKDOWN</P>

自定义扩展可用于构建个性化渲染逻辑。

  ◆  ◆

常用函数与类速览

markdown(text, extensions=None, output_format='xhtml')

将 Markdown 文本转换为 HTML。

参数:

text:Markdown 格式字符串。

extensions:扩展列表,如 ["tables", "fenced_code"](可选)。

output_format:输出 HTML 格式(默认 'xhtml')。

返回:HTML 格式字符串。

markdownFromFile(input, output=None, encoding='utf-8', extensions=None)

从文件读取 Markdown 文本并转换为 HTML。

参数:

input:输入文件路径。

output:输出文件路径(可选)。

encoding:文件编码(默认 utf-8)。

extensions:扩展列表。

返回:转换后的 HTML 字符串。

Markdown(extensions=None, output_format='xhtml')

创建 Markdown 渲染器实例,可多次使用。

参数:

extensions:扩展列表。

output_format:输出 HTML 格式。

返回:Markdown 实例对象。

Markdown.convert(source)

执行文本转换。

参数:

source:Markdown 格式字符串。

返回:HTML 字符串。

Markdown.reset()

重置当前 Markdown 实例的内部状态。

参数:无。

返回:无。

Markdown.registerExtensions(extensions, configs)

注册扩展插件与配置。

参数:

extensions:扩展名称列表。

configs:扩展配置字典。

返回:无。

  ◆  ◆

补充说明

1、markdown 库符合 CommonMark 标准,并扩展支持多种额外语法。

2、输出 HTML 可直接用于 Web 页面、静态博客或 HTML 模板。

3、与 pypandoc、mistune 等库相比,markdown 更强调标准兼容与扩展能力。

4、若要高性能或自定义渲染,可考虑使用 markdown2 或 mistune 作为替代。

📘 小结

markdown 库让 Python 拥有了强大的文本渲染能力。

它既是轻量的 HTML 转换工具,又是可扩展的文档渲染引擎。

适用于:

构建文档网站;

博客渲染;

Web 编辑器后端;

Markdown → HTML 自动化转换。

图片

“点赞有美意,赞赏是鼓励”

http://www.dtcms.com/a/613426.html

相关文章:

  • [智能体设计模式] 第12章:异常处理与恢复
  • 网站建设 维护揭阳百度seo公司
  • STL设计模式探秘:容器适配器仿函数
  • 平面翻转群
  • 毕业设计做音乐网站网站开发的最初阶段包括
  • 【ros2】ROS2 C++节点创建指南
  • 可编程逻辑器件学习(day18):FPGA时序理论与数字电路基础深度解析
  • 大数据Spark(七十三):Transformation转换算子glom和foldByKey使用案例
  • 工业显示器在真空包装机中的应用
  • 西安网站建设咪豆广告发布与制作
  • 无锡网站设计服务电子商务网站技术
  • 跨平台账号矩阵高效协同术
  • Ubuntu重新挂载Windows C盘以及如何安全退出外挂硬盘
  • 前端微前端框架原理,qiankun源码分析
  • 深入HarmonyOS打印服务:从基础到高级应用开发
  • 在ubuntu中创建根文件系统
  • 科大讯飞哪些做教学资源的网站泰安网络推广seo
  • 建站资源共享怎样在阿里云做网站
  • 前端无障碍开发检查清单,WCAG合规
  • 【软考 位示图大小计算问题】物理块|字长|字数
  • 用Ai生成webos设计稿
  • DNS练习
  • 学生可以做的网站兼职门户网站建设哪专业
  • Python 编程实战 · 实用工具与库 — Flask 路由与模板
  • Wayland 会话下使用 Fcitx 5 输入法与 GNOME Shell 的兼容性
  • 第39节:3D打印输出:模型导出准备
  • 买空间的网站好wordpress萌
  • sql基本增删改查语句汇总
  • vue3-封装权限按钮组件和自定义指令
  • 物联网定位技术实验报告|实验一 Wi-Fi指纹定位