携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第19天,点击查看活动详情
前言
Markdown 是一种流行的标记语言,用于创建可以转换为样式化 HTML 的纯文本,这种创建文档的方式,不仅易于以纯文本格式阅读,同时也能够在 HTML 中正确设置页面样式。
Python 创建 Markdown 格式化文本
在本节中,我们将学习如何使用 Python 将 Markdown 文档转换为样式化的 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}
导入 misune 和 datetime:
>>> 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_name 和 rating 元素从 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 文件以检查结果: