python-markdown無法將```生成標籤問題解決方法
阿新 • • 發佈:2019-01-23
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+空格的程式碼轉化