1. 程式人生 > >python-markdown無法將```生成標籤問題解決方法

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+空格的程式碼轉化

參考網站