热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:pythonmarkdown

篇首语:本文由编程笔记#小编为大家整理,主要介绍了python-markdown相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了python-markdown相关的知识,希望对你有一定的参考价值。





python-markdown





介绍安装基本用法生态markdown.extensions.tocmarkdown.extensions.fenced_codemarkdown.extensions.tables编写自己的拓展




介绍

python-markdown 这个库可以把 markdown 转化为 html ,用起来方便,有许多的第三方拓展,再者自己加一些自己的功能也非常方便。

技术图片





安装

Markdown pip 主面 可以通过 pip 直接安装。

pip3 install Markdown
Looking in indexes: https://mirrors.cloud.tencent.com/pypi/simple
Collecting Markdown
Downloading https://mirrors.cloud.tencent.com/pypi/packages/ab/c4/ba46d44855e6eb1770a12edace5a165a0c6de13349f592b9036257f3c3d3/Markdown-3.2.1-py2.py3-none-any.whl (88kB)
|████████████████████████████████| 92kB 539kB/s
Requirement already satisfied: setuptools>=36 in /usr/local/python-3.8.2/lib/python3.8/site-packages (from Markdown) (41.2.0)
Installing collected packages: Markdown
Successfully installed Markdown-3.2.1
WARNING: You are using pip version 19.2.3, however version 20.0.2 is available.
You should consider upgrading via the ‘pip install --upgrade pip‘ command.



基本用法

转化一段简单的 markdown 字符串为例子。

import markdown
s = "## hell-world"
print(markdown.markdown(s))

运行效果如下。

python3 main.py

hell-world


API 就是这么的人性化,只要把要转化的 markdown 字符串传递给 markdown.markdown函数就行。




生态

markdown 这个库的生态比较好,一些常用的功能它自己就解决,实在解决不了的还有官方拓展可用。通常来说对于“段落”,“标题”这些简单的元素我们用不到拓展,但是对于“目录”,“代码块” 这些复杂点的东西就要用到拓展才能实现解析了,下面会介绍一些常用的拓展和编写自己的拓展。





markdown.extensions.toc

在上面的例子中,我们看到 markdown 虽然格式化了标题(h2)但是不没能自动生成目录,markdown.extensions.toc就能自动为文章的标题生成目录。

# 给 markdown 加上 [TOC] 标记
s="""[TOC]
## python
hello-python
---
## sql
hello-sql
---
"""
# 在处理 markdown 的时候加上 TOC 专用的拓展
print(markdown.markdown(s,extensiOns=[‘markdown.extensions.toc‘]))

运行后的输出如下。

<div class="toc">
<ul>
<li><a href="#python">pythona>li>
<li><a href="#sql">sqla>li>
ul>
div>
<h2 id="python">pythonh2>
<p>hello-pythonp>
<hr />
<h2 id="sql">sqlh2>
<p>hello-sqlp>
<hr />

看只是加了一个简单的 extensiOns=[‘markdown.extensions.toc‘] 就实现了目录功能。




markdown.extensions.fenced_code

markdown.extensions.fenced_code 为 markdown 加上格式化代码的功能。

s="""
# 请把 . 号换成 ` 号,这里不方便书写
...sql
select 1 as a;
...
"""
print(markdown.markdown(s,extensiOns=[‘markdown.extensions.toc‘,‘markdown.extensions.fenced_code‘]))

输出如下。

python3 main.py

"sql">select 1 as a;




markdown.extensions.tables

markdown.extensions.tables 可以用来解析表格。

s="""|**name**|**age**|
|---|---|
|tim| 16|
|tom| 17|
"""
print(markdown.markdown(s,extensiOns=[‘markdown.extensions.toc‘,‘markdown.extensions.fenced_code‘,‘markdown.extensions.tables‘]))

输出如下。

python3 main.py


















nameage
tim16
tom17




编写自己的拓展

可以看到markdown.extensions.tables解析出来的 html 是不带样式的,那怎么加上样式呢?我们可以自定义拓展呀。

from markdown import extensions
from markdown.treeprocessors import Treeprocessor
class BootstrapTreeprocessor(Treeprocessor):
"""
"""
def run(self, node):
for child in node.getiterator():
# 如果是 table
if child.tag == ‘table‘:
child.set("class", "table table-bordered table-dark")
elif child.tag == ‘h2‘:
child.set("class", "h5 text-secondary mb-4")
# elif child.tag == ‘img‘:
# child.set("class","img-fluid")
return node
class BootStrapExtension(extensions.Extension):
"""
"""
def extendMarkdown(self, md):
"""
"""
md.registerExtension(self)
self.processor = BootstrapTreeprocessor()
self.processor.md = md
self.processor.cOnfig= self.getConfigs()
md.treeprocessors.add(‘bootstrap‘, self.processor, ‘_end‘)
s="""|**name**|**age**|
|---|---|
|tim| 16|
|tom| 17|
"""
print(markdown.markdown(s,extensiOns=[‘markdown.extensions.toc‘,‘markdown.extensions.fenced_code‘,‘markdown.extensions.tables‘,BootStrapExtension()]))

输出如下。

python3 main.py
# 看 class 样式加上去了。

"table table-bordered table-dark">
















nameage
tim16
tom17

更多关于拓展的内容可以查看 python-markdown的官方文档,上面的编写的这个拓展你也可以在 github 上找到。




推荐阅读
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 怀疑是每次都在新建文件,具体代码如下 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • 本文介绍了网页播放视频的三种实现方式,分别是使用html5的video标签、使用flash来播放以及使用object标签。其中,推荐使用html5的video标签来简单播放视频,但有些老的浏览器不支持html5。另外,还可以使用flash来播放视频,需要使用object标签。 ... [详细]
  • 本文讨论了如何使用GStreamer来删除H264格式视频文件中的中间部分,而不需要进行重编码。作者提出了使用gst_element_seek(...)函数来实现这个目标的思路,并提到遇到了一个解决不了的BUG。文章还列举了8个解决方案,希望能够得到更好的思路。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
author-avatar
knight
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有