前言
mistune库是一个解析Markdown的利器,使用起来非常简单。当我们想要解析Markdown格式的文档时,只需两步就能将其转换成html格式。如下:
import mistune
mistune.html(YOUR_MARKDOWN_TEXT)
安装方式也非常简单,dddd:
pip install mistune
命令行工具
mistune可以通过命令行将markdown格式的文本转换为HTML,可以使用python3 -m mistune -h
查看帮助文档:
yczx@yczx:~$ python3 -m mistune -h
usage: python -m mistune [-h] [-m MESSAGE] [-f FILE] [-p NAME [NAME ...]][--escape] [--hardwrap] [-o OUTPUT] [-r RENDERER][--version]Mistune, a sane and fast python markdown parser.Here are some use cases of the command line tool:$ python -m mistune -m "Hi **Markdown**"<p>Hi <strong>Markdown</strong></p>$ python -m mistune -f README.md<p>...$ cat README.md | python -m mistune<p>...options:-h, --help show this help message and exit-m MESSAGE, --message MESSAGEthe markdown message to convert-f FILE, --file FILE the markdown file to convert-p NAME [NAME ...], --plugin NAME [NAME ...]specifiy a plugin to use--escape turn on escape option--hardwrap turn on hardwrap option-o OUTPUT, --output OUTPUTwrite the rendered result into file-r RENDERER, --renderer RENDERERspecify the output renderer--version show program's version number and exit
此时我们有一段Markdown文档,用以下内容来测试mistune提供的命令行工具:
# h1 标题
## h2 标题
### h3 标题
#### h4 标题
##### h5 标题
###### h6 标题## 水平线___---***## 文本样式**This is bold text**__This is bold text__*This is italic text*_This is italic text_~~Strikethrough~~## 列表无序+ Create a list by starting a line with `+`, `-`, or `*`
+ Sub-lists are made by indenting 2 spaces:- Marker character change forces new list start:* Ac tristique libero volutpat at+ Facilisis in pretium nisl aliquet- Nulla volutpat aliquam velit
+ Very easy!有序1. Lorem ipsum dolor sit amet
2. Consectetur adipiscing elit
3. Integer molestie lorem at massa1. You can use sequential numbers...
1. ...or keep all the numbers as `1.`Start numbering with offset:57. foo
1. bar## 代码Inline `code`Indented code// Some commentsline 1 of codeline 2 of codeline 3 of codeBlock code "fences"
Sample text here…
Syntax highlighting```js
var foo = function (bar) {return bar++;
};console.log(foo(5));
## 将 Markdown 转换为 HTML
默认情况下,misune的命令行工具会将markdown文本转换为HTML文本:
```shell
python -m mistune -f README.md
输出:
<h1>h1 标题</h1>
<h2>h2 标题</h2>
<h3>h3 标题</h3>
<h4>h4 标题</h4>
<h5>h5 标题</h5>
<h6>h6 标题</h6>
<h2>水平线</h2>
<hr />
<hr />
<hr />
<h2>文本样式</h2>
<p><strong>This is bold text</strong></p>
<p><strong>This is bold text</strong></p>
<p><em>This is italic text</em></p>
<p><em>This is italic text</em></p>
<p><del>Strikethrough</del></p>
<h2>列表</h2>
<p>无序</p>
<ul><li>Create a list by starting a line with <code>+</code>, <code>-</code>, or <code>*</code></li><li>Sub-lists are made by indenting 2 spaces:<ul><li>Marker character change forces new list start:<ul><li>Ac tristique libero volutpat at</li></ul><ul><li>Facilisis in pretium nisl aliquet</li></ul><ul><li>Nulla volutpat aliquam velit</li></ul></li></ul></li><li>Very easy!</li>
</ul>
<p>有序</p>
<ol><li><p>Lorem ipsum dolor sit amet</p></li><li><p>Consectetur adipiscing elit</p></li><li><p>Integer molestie lorem at massa</p></li><li><p>You can use sequential numbers...</p></li><li><p>...or keep all the numbers as <code>1.</code></p></li>
</ol>
<p>Start numbering with offset:</p>
<ol start="57"><li>foo</li><li>bar</li>
</ol>
<h2>代码</h2>
<p>Inline <code>code</code></p>
<p>Indented code</p>
<pre><code>// Some commentsline 1 of codeline 2 of codeline 3 of code</code></pre>
<p>Block code "fences"</p>
<pre><code>Sample text here...
</code></pre>
<p>Syntax highlighting</p>
<pre><code class="language-js">var foo = function (bar) {return bar++;};console.log(foo(5));
</code></pre>
将 Markdown 转换为RestructedText
Mistune 有一个内置的 RestructedText 格式化程序,使用以下命令指定渲染器:-r rst
python -m mistune -f README.md -r rst
运行这个我这边是直接报错了。。。
格式化 Markdown
您可以使用 Markdown 渲染器重新格式化 Markdown 文件:
python -m mistune -f README.md -r markdown -o README.md
该命令将重新格式化文本README.md
,额也是报错,已提issuehttps://github.com/lepture/mistune/issues/374
Unix管道
命令行工具支持unix PIPE。例如:
echo "foo **bar**" | python -m mistune
输出:
<p>foo <strong>bar</strong></p>
Reference
https://mistune.lepture.com/en/latest/directives.html