python-markdown无法将```生成标签问题解决方法

python-markdown无法将“`生成标签问题解决方法

我用的python-Markdown==2.6.5 markdown生成html是,发现无法将“`转成代码段,但是看别人的python博客源码,却有代码段生成,详细看一下代码,发现都是一样的转化代码:

html=markdown.markdown(mdcontent)

找了下markdown文件,发现代码段除里“`定义还可以用tab符+空格定义,所以,为了能让 ”’ 也变成代码段的标签,我们需要对md进行预处理:

configs = {}
myext = mdextension.CodeExtension(configs=configs)
md = markdown.markdown(fileContent, extensions=[myext])

其中mdextension是一个py文件,里面包含md文件的处理扩展,包括预处理和后置处理,代码如下:

#-*-coding:utf-8-*-
__author__ = 'george.yang'
from markdown.extensions import Extension
from markdown.util import etree
from markdown.postprocessors import Postprocessor
from markdown.preprocessors import Preprocessor

##预处理器
class CodePreprocessor(Preprocessor):
    def run(self, lines):
        # return lines
        new_lines = []
        flag_in = False
        for line in lines:
            if line[:3]=='```':
                line = line.lstrip('```')
                if flag_in:
                    flag_in = False
                else:
                    flag_in = True

            if flag_in:
                line = '     ' + line

            new_lines.append(line)
        return new_lines

##后置处理器
class CodePostprocessor(Postprocessor):
    def run(self, text):
        return text
        # t_list = []
        # codeIn = False
        # for line in text.split('\n'):
        #     t_list.append(line)
        # return '\n'.join(t_list)

##扩展主体类

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扩展处理后,可以将“`生成代码段,同时兼容tab+空格的代码转化

参考网站

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Markdown2 是一个 Python 库,用于将 Markdown 文本换为 HTML。它是 MarkdownPython Markdown 库的增强版,提供了更多的功能和选项。 以下是使用 Markdown2 的基本步骤: 1. 安装 Markdown2:在命令行中执行以下命令来安装 Markdown2。 ``` pip install markdown2 ``` 2. 导入 Markdown2:在 Python 代码中导入 markdown2 模块。 ```python import markdown2 ``` 3. 将 Markdown 换为 HTML:使用 `markdown2.markdown()` 函数将 Markdown 文本换为 HTML。 ```python markdown_text = "这是一个 **粗体** 文本" html = markdown2.markdown(markdown_text) ``` 4. 输出 HTML:可以将生成HTML 输出到文件或打印到控制台。 ```python print(html) ``` 除了基本的换功能,Markdown2 还提供了许多其他选项和扩展。以下是一些常用的选项: - `extras` 参数:用于启用额外的扩展功能。例如,可以使用 `'fenced-code-blocks'` 扩展来支持代码块的语法高亮。 ```python html = markdown2.markdown(markdown_text, extras=['fenced-code-blocks']) ``` - `safe_mode` 参数:启用安全模式,以防止执行危险的 HTML 标签和脚本。 ```python html = markdown2.markdown(markdown_text, safe_mode=True) ``` - `html4tags` 参数:将输出的 HTML 标签设置为 HTML4 格式。 ```python html = markdown2.markdown(markdown_text, html4tags=True) ``` 以上是 Markdown2 的基本使用手册。你可以根据自己的需求调整参数和扩展功能,以实现更复杂的 Markdown 换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值