您的位置:首页 > 编程语言 > Python开发

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

2015-12-20 16:17 771 查看

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+空格的代码转化

参考网站
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: