Python 创建 Markdown 格式化文本

1,672 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第19天,点击查看活动详情

前言

Markdown 是一种流行的标记语言,用于创建可以转换为样式化 HTML 的纯文本,这种创建文档的方式,不仅易于以纯文本格式阅读,同时也能够在 HTML 中正确设置页面样式。

Python 创建 Markdown 格式化文本

在本节中,我们将学习如何使用 PythonMarkdown 文档转换为样式化的 HTML

安装 mistune

为了生成 Markdown 文件,我们首先需要安装 misune 模块,它能够将 Markdown 文档编译成 HTML,安装方法与其他第三方库相同:

$ pip install mistune

创建 Markdown 格式化文本

我们首先创建一个 md 模板文件 markdown_template.md,其中包含要生成的文档模板:

Movies Report

=======

Date: {date}

User name: {user}

Movies seen in the last 30 days:

{movie_rating}

Total movies: {total_movies}

导入 misunedatetime

>>> import mistune
>>> from datetime import datetime

接下来,准备模板和要显示的数据。从 markdown_template.md 文件中读取模板:

>>> with open('markdown_template.md') as f:
...     template = f.read()
...

使用 Python 字典设置要在文档中的展示的数据:

>>> context = {'date':datetime.now(), 'user': '001', 'movie_name':['007', 'Spiderman', 'Batman'], 'rating':[5.4, 5.6, 5.5]}

由于我们想要评分记录显示为项目符号,因此将列表转换为合适的 Markdown 项目符号列表。此外,我们还需要存储电影评分记录的数量:

>>> context['total_movies'] = len(context['movie_name'])
>>> context['movie_rating'] = '\n'.join('* User rating for {} is {}.'.format(movie, rating) for movie, rating in zip(context['movie_name'], context['rating']))

我们统计了额外的信息——电影评分的记录数量,它是从 movie_name 元素计算得到的。评分记录利用 movie_namerating 元素从 Python 列表转换为有效的 Markdown 元素。使用换行符 \n 和字符*可以将评分记录呈现为项目符号:

>>> '\n'.join('* User rating for {} is {}.'.format(movie, rating) for movie, rating in zip(context['movie_name'], context['rating']))
'* User rating for 007 is 5.4.\n* User rating for Spiderman is 5.6.\n* User rating for Batman is 5.5.'

最后,使用 misune 将文档转换为 HTML 并存储在文件中。渲染模板并将生成的 Markdown 编译成 HTML

>>> md_doc = template.format(**context)
>>> doc = mistune.markdown(md_doc)

最后,将生成的文档存储在 document.html 文件中:

>>> with open('document.html', 'w') as f:
...     f.write(doc)
...
279

在浏览器中打开 document.html 文件以检查结果:

生成html文档