Python-Markdown:老牌 Markdown 解析引擎的 Python 实现
Python-Markdown/markdown 在 GitHub 上收获了 4,212 颗 Star。这是一个将 Markdown 文本转换为 HTML 的 Python 库,也是 John Gruber 原始 Markdown 规范的 Python 实现。
这个项目的定位很明确:提供一个接近参考实现的标准 Markdown 解析器。它覆盖绝大多数常见 Markdown 语法,处理普通文本转换任务没有压力。如果只需要把 README 或者文档中的 Markdown 渲染成 HTML,直接用它就行。
设计上,Python-Markdown 把核心功能和扩展功能分开。核心只实现标准 Markdown 语法,其他功能走扩展通道。这样拆分的实际好处有两个。一是核心代码量小,导入速度快。二是可以根据项目需要选择性加载扩展,用不到的功能不会占用资源。
安装只需要一条命令:
pip install markdown
基本用法也很直接:
import markdown
html = markdown.markdown(your_text_string)
传入 Markdown 文本,拿到 HTML 结果。两行的调用成本,对于大部分场景已经足够。如果文本量较大,或者需要反复调用,也可以初始化一个 Markdown 实例复用配置,避免每次重新加载扩展。
md = markdown.Markdown(extensions=['tables'])
html = md.convert(text)
md.reset()
第二次调用前执行 reset() 清空状态,同一个实例可以重复利用。
扩展是 Python-Markdown 的一个亮点。项目内置了多个常用扩展:
- tables:支持 GitHub 风格的表格语法
- fenced_code:支持代码块围栏
- toc:自动提取标题生成目录
- meta:提取文档头部元数据
- nl2br:将换行符转换为 br 标签
启用方式是在调用时传入 extensions 列表:
html = markdown.markdown(text, extensions=['tables', 'fenced_code'])
社区也维护了大量第三方扩展,覆盖数学公式、图表、脚注、表情符号等场景。扩展的接口是公开的,开发者可以按需编写自己的扩展。
这个项目已经持续维护了很多年,API 保持向后兼容。它不追赶 GitHub Flavored Markdown 的新特性,也不支持 CommonMark 规范,只专注于做好标准 Markdown 的解析工作。这种专注带来了一个结果:行为稳定,升级风险低。
文档方面,项目网站提供了完整的安装说明和 API 参考。安装包内附带 docs/ 目录,可以离线查阅。变更日志记录了每个版本的改动,升级前可以先看一遍。
对于需要 Markdown 解析能力的 Python 项目,Python-Markdown 是一个经过验证的选择。代码量不大,接口简单,扩展机制完善,文档齐全。如果项目只需要标准 Markdown 语法,不需要复杂的方言支持,这个库可以直接引入使用。