广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python的markdown扩展开发
  • 284
分享到

python的markdown扩展开发

pythonmarkdown 2023-01-31 05:01:09 284人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

近期使用python的markdown写了一个文档小程序,由于需要用到一些额外的功能,所以就对markdown进行了一些简单的扩展,进而记录下编写的模板。直接贴代码: #encoding=utf-8 ##预处理器 from markdo

近期使用pythonmarkdown写了一个文档小程序,由于需要用到一些额外的功能,所以就对markdown进行了一些简单的扩展,进而记录下编写的模板。直接贴代码:

#encoding=utf-8
##预处理器
from markdown.preprocessors import Preprocessor
class CodePreprocessor(Preprocessor):
    def run(self, lines):
        new_lines = []
        flag_in = False
        block = []
        for line in lines:
            if line[:3]=='!!!':                
                flag_in = True
                block.append('<pre class="brush: %s;">' % line[3:].strip())
            elif flag_in:
                if line.strip() and line[0]=='!':
                    block.append(line[1:])
                else:
                    flag_in = False
                    block.append('</pre>')
                    block.append(line)
                    new_lines.extend(block)
                    block = []
            else:
                new_lines.append(line)
        if not new_lines and block:
            new_lines = block
        return new_lines

##后置处理器
from markdown.postprocessors import Postprocessor
class CodePostprocessor(Postprocessor):
    def run(self, text):
        t_list = []
        for line in text.split('\n'):
            if line[:5]=='<p>!<':
                line = line.lstrip('<p>').replace('</p>', '')[1:]
            t_list.append(line) 
        return '\n'.join(t_list)    
    
##扩展主体类        
from markdown.extensions import Extension
from markdown.util import etree
class CodeExtension(Extension):
    def __init__(self, configs={}):
        self.config = configs

    def extendMarkdown(self, md, md_globals):
        ##注册扩展,用于markdown.reset时扩展同时reset
        md.reGISterExtension(self)   
                
        ##设置Preprocessor
        codepreprocessor = CodePreprocessor()
        #print md.preprocessors.keys()
        md.preprocessors.add('codepreprocessor', codepreprocessor, '<nORMalize_whitespace')
        
        ##设置Postprocessor
        codepostprocessor = CodePostprocessor()
        #print md.postprocessors.keys()
        md.postprocessors.add('codepostprocessor', codepostprocessor, '>unescape')
        
        ##print md_globals   ##markdown全局变量
        

关于markdown扩展的深入内容,可以查看官方文档,不过没有例子,只是手册而已。但大体能知道有哪些内容组成,在结合上面的文件结构都是可以写出来的。下面是调用的代码:

#encoding=utf-8
import markdown
import markdowncode

text = '''
!!!Python
!
!def foo():

###title
'''

configs = {}

myext = markdowncode.CodeExtension(configs=configs)
md = markdown.markdown(text, extensions=[myext])
print md

主要扩展了2个功能:

一个是把形如:

!!!python
!
!def foo():
!  return 'foo'
转换成:

<pre class="brush: python;">

def foo():
  return 'foo'
</pre>
一个是把形如:

!<div>
#h1
!</div>
转换成:
<div>
<h1>h1</h1>
</div>
为什么要有第二个扩展呢?因为



参考文档:

Http://pythonhosted.org/Markdown/extensions/index.html

--结束END--

本文标题: python的markdown扩展开发

本文链接: https://www.lsjlt.com/news/188707.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python的markdown扩展开发
    近期使用python的markdown写了一个文档小程序,由于需要用到一些额外的功能,所以就对markdown进行了一些简单的扩展,进而记录下编写的模板。直接贴代码: #encoding=utf-8 ##预处理器 from markdo...
    99+
    2023-01-31
    python markdown
  • 使用Python来开发Markdown脚本扩展的实例分享
    关于Markdown 在刚才的导语里提到,Markdown 是一种用来写作的轻量级「标记语言」,它用简洁的语法代替排版,而不像一般我们用的字处理软件 Word 或 Pages 有大量的排版、字体设置。它使我...
    99+
    2022-06-04
    脚本 实例 Python
  • PHP扩展开发--入门
    环境介绍:         centos7、php7.4 实现功能:写个简单类,包含name属性和一个say方法; 打开PHP安装的源码包,进入/usr/local/resource/php-7.4.24/ext         执行命令:...
    99+
    2023-10-11
    php 服务器
  • Rust如何开发PHP扩展
    本篇内容主要讲解“Rust如何开发PHP扩展”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Rust如何开发PHP扩展”吧!为什么要使用php扩展?优点:php扩展是C开发的,那速度没得说。耦合性...
    99+
    2023-07-04
  • WPF开发的控件功能扩展
    这篇文章主要讲解了“WPF开发的控件功能扩展”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WPF开发的控件功能扩展”吧!目录No1. 自定义控件模板No2. 重写控件No3. 附加属性来试试...
    99+
    2023-06-20
  • Windows上配置Emacs来开发Python及用Python扩展Emacs
    Windows下配置Emacs来开发Python 去年在网上偶然的一个机会知道了Emacs的存在,在周围前辈们都在夸赞Sublime好用的时候,喜欢跟大众唱反调的我,突然觉得如果能用Emacs来编代码,也许...
    99+
    2022-06-04
    Windows Emacs Python
  • 怎么进行Node.js扩展开发
    这篇文章主要讲解了“怎么进行Node.js扩展开发”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么进行Node.js扩展开发”吧!为什么要开发Node.j...
    99+
    2022-10-19
  • 怎么给SAP WebIDE开发扩展
    本篇内容介绍了“怎么给SAP WebIDE开发扩展”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!新建一个SAP WebIDE扩展,基于的模板...
    99+
    2023-06-04
  • PHP核心的扩展开发实践与技巧
    PHP核心的扩展开发实践与技巧在PHP开发中,扩展是一种非常重要的技术手段。通过扩展,我们可以扩展PHP的功能,提高代码的运行效率,实现一些PHP无法实现的功能。本文将介绍PHP核心的扩展开发实践与技巧,并提供具体的代码示例。一、什么是PH...
    99+
    2023-11-08
    技巧 扩展开发 PHP核心
  • PHP商城开发中的扩展性设计和最新的开发技术
    在现代互联网时代,电子商务已经成为了一种普及的经济模式。在这样一个背景下,PHP商城的开发成为了一个深受欢迎的领域。然而,PHP商城开发可能面临的一个最大问题就是扩展性设计。如何设计出高扩展性的PHP商城成为了一个让开发者们头痛的问题。在本...
    99+
    2023-05-14
    PHP 开发技术 扩展性设计
  • Rust开发PHP扩展Liunx版【必须收藏】
    众所周知,作为一名phper,对php有限的功能感到尴尬,比如:调用ffmpeg视频处理工具。没有专门的扩展来操作的,什么?利用php system函数调用?对于开源的php脚本,这太不安全了! 这个时候作为深资的phper会考虑开发php...
    99+
    2023-08-31
    php 开发语言 rust 扩展现实 后端
  • Chrome插件(扩展)开发全攻略(完整demo)
    目录写在前面前言什么是Chrome插件学习Chrome插件开发有什么意义为什么是Chrome插件而不是Firefox插件开发与调试核心介绍manifest.jsoncontent-s...
    99+
    2022-11-12
  • Golang开发建议:如何设计可扩展的架构
    Golang作为一门现代化的编程语言,在近年来越来越受到开发者的关注和喜爱。它以其优秀的并发能力、高性能和可靠性而闻名。然而,要构建一个可扩展的架构需要额外的考虑和设计。本文将分享一些在Golang开发过程中设计可扩展架构的建议。使用接口在...
    99+
    2023-11-22
    架构设计 可扩展性 Golang开发
  • VSCode中用于Flutter开发的最佳扩展有哪些
    这篇文章主要介绍“VSCode中用于Flutter开发的最佳扩展有哪些”,在日常操作中,相信很多人在VSCode中用于Flutter开发的最佳扩展有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”VSCod...
    99+
    2023-07-06
  • Python开发注意事项:保证代码的可维护性和可扩展性
    Python作为一种流行的编程语言,被广泛应用于Web开发、数据分析、人工智能等各个领域。在进行Python开发时,保证代码的可维护性和可扩展性是非常重要的。本文将介绍一些Python开发注意事项,帮助开发者编写可维护、可扩展的Python...
    99+
    2023-11-22
    测试 模块化 可读性
  • uniapp Android 原生插件开发(Module 扩展为例·2022)
    有问题可以在评论区找一下有没有答案;同样,有补充可以在评论区评论一下,方便其他人。 前言 本文只介绍uniapp原生插件开发流程,Android studio(后面称编辑器) 以及 java 环境的安装请自行查找相关文档解决;阅读本文者须具...
    99+
    2023-09-21
    android uniapp 前端 APP 原生插件
  • 利用C#开发浏览器扩展的全过程记录
    目录IntroBlazorBrowserExtensionGet StartedStructureFurtherMoreReferencesIntro 前段时间听了 Justin ...
    99+
    2022-11-12
  • 怎么开启环境的redis扩展
    开启环境redis扩展的示例:在linux终端开启,指令如下:$ mkdir /usr/local/redis$ cd /usr/local/src$ wget http://re...
    99+
    2022-10-08
  • 小程序开发中如何扩展Page页面对象
    这篇文章主要介绍“小程序开发中如何扩展Page页面对象 ”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“小程序开发中如何扩展Page页面对象 ”文章能帮助大家解决问题。小程序是通过调用 Pa...
    99+
    2023-06-26
  • Android App开发中HTTP扩展包OkHttp的入门使用指南
    Android 开发,不可避免的会用到网络技术,而多数情况下,我们都是使用 HTTP 协议来发送和接收网络数据。Android 系统主要提供两种方式来进行 HTTP 通信,Ht...
    99+
    2022-06-06
    HTTP okhttp app Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作