Python Markdown
Python3 学习笔记 · 整理自菜鸟教程
一句话
markdown 库把 Markdown 文本转换成 HTML,常用于博客、文档渲染和内容发布。
要点
- 安装:
pip install markdown,导入import markdown。 - 核心就一个函数:
markdown.markdown(text)返回 HTML 字符串。 - **扩展(extensions)**是重点:表格、代码高亮、目录、脚注等都要开扩展。
- 常用扩展:
extra(表格/属性/围栏代码)、codehilite、toc(自动生成目录锚点)、nl2br(换行转<br>)。 extensions_configs可给扩展传参,如代码高亮样式、目录层级。- 配合
bleach或DOMPurify过滤 HTML,防止用户内容 XSS。 - 反向转换(HTML→Markdown)用
html2text或markdownify,不是本库功能。
语法 / 常用方法
| 语法 / 方法 | 说明 | 示例 |
|---|---|---|
markdown.markdown(text) |
转 HTML | 基础用法 |
markdown.markdown(text, extensions=[...]) |
带扩展转换 | 常用形态 |
"extra" |
表格/围栏代码/属性等合集 | 最常用扩展 |
"toc" |
生成标题锚点与目录 | [TOC] 占位 |
"codehilite" |
代码语法高亮 | 需 Pygments |
"nl2br" |
单换行转 <br> |
聊天/评论场景 |
"tables" |
仅启用表格 | 按需最小化 |
"fenced_code" |
``` 围栏代码块 | 现代写法 |
"footnotes" |
脚注支持 | [^1] |
extensions_configs |
扩展参数 | 高亮样式等 |
html2text / markdownify |
HTML→MD(第三方) | 反向转换 |
代码示例
1 | |
易错点
- 不加
extra/tables扩展,Markdown 表格不会渲染成<table>。 codehilite需要额外安装Pygments,否则高亮不生效甚至报错。- 生成的 HTML 若来自用户输入,直接渲染有 XSS 风险,务必过滤或转义。
toc扩展要靠[TOC]占位符插入目录,不是自动加在页面上。nl2br会让所有单换行变<br>,写 HTML 时可能产生多余空行。- 中英文混排时标题锚点可能含非 ASCII 字符,前端跳转要对应处理。
markdown只负责 MD→HTML,反向转换请用html2text等库。