使用Python來(lái)開(kāi)發(fā)Markdown腳本擴(kuò)展的實(shí)例分享
關(guān)于Markdown
在剛才的導(dǎo)語(yǔ)里提到,Markdown 是一種用來(lái)寫(xiě)作的輕量級(jí)「標(biāo)記語(yǔ)言」,它用簡(jiǎn)潔的語(yǔ)法代替排版,而不像一般我們用的字處理軟件 Word 或 Pages 有大量的排版、字體設(shè)置。它使我們專心于碼字,用「標(biāo)記」語(yǔ)法,來(lái)代替常見(jiàn)的排版格式。例如此文從內(nèi)容到格式,甚至插圖,鍵盤(pán)就可以通通搞定了。目前來(lái)看,支持 Markdown 語(yǔ)法的編輯器有很多,包括很多網(wǎng)站(例如簡(jiǎn)書(shū))也支持了 Markdown 的文字錄入。Markdown 從寫(xiě)作到完成,導(dǎo)出格式隨心所欲,你可以導(dǎo)出 HTML 格式的文件用來(lái)網(wǎng)站發(fā)布,也可以十分方便的導(dǎo)出 PDF 格式,這種格式寫(xiě)出的簡(jiǎn)歷更能得到 HR 的好感。甚至可以利用 CloudApp 這種云服務(wù)工具直接上傳至網(wǎng)頁(yè)用來(lái)分享你的文章,全球最大的輕博客平臺(tái) Tumblr,也支持使用 Mou 這類(lèi) Markdown 工具進(jìn)行編輯并直接上傳。
python的markdown擴(kuò)展開(kāi)發(fā)
近期使用python的markdown寫(xiě)了一個(gè)文檔小程序,由于需要用到一些額外的功能,所以就對(duì)markdown進(jìn)行了一些簡(jiǎn)單的擴(kuò)展,進(jìn)而記錄下編寫(xiě)的模板。直接貼代碼:
#encoding=utf-8 ##預(yù)處理器 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) ##擴(kuò)展主體類(lèi) 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): ##注冊(cè)擴(kuò)展,用于markdown.reset時(shí)擴(kuò)展同時(shí)reset md.registerExtension(self) ##設(shè)置Preprocessor codepreprocessor = CodePreprocessor() #print md.preprocessors.keys() md.preprocessors.add('codepreprocessor', codepreprocessor, '<normalize_whitespace') ##設(shè)置Postprocessor codepostprocessor = CodePostprocessor() #print md.postprocessors.keys() md.postprocessors.add('codepostprocessor', codepostprocessor, '>unescape') ##print md_globals ##markdown全局變量
關(guān)于markdown擴(kuò)展的深入內(nèi)容,可以查看官方文檔,不過(guò)沒(méi)有例子,只是手冊(cè)而已。但大體能知道有哪些內(nèi)容組成,在結(jié)合上面的文件結(jié)構(gòu)都是可以寫(xiě)出來(lái)的。下面是調(diào)用的代碼:
#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
主要擴(kuò)展了2個(gè)功能:
一個(gè)是把形如:
!!!python ! !def foo(): ! return 'foo'
轉(zhuǎn)換成:
<pre class="brush: python;"> def foo(): return 'foo' </pre>
- 獲取CSDN文章內(nèi)容并轉(zhuǎn)換為markdown文本的python
- Python3自動(dòng)生成MySQL數(shù)據(jù)字典的markdown文本的實(shí)現(xiàn)
- python使用html2text庫(kù)實(shí)現(xiàn)從HTML轉(zhuǎn)markdown的方法詳解
- 解決python Markdown模塊亂碼的問(wèn)題
- 如何用Python實(shí)現(xiàn)簡(jiǎn)單的Markdown轉(zhuǎn)換器
- python導(dǎo)出chrome書(shū)簽到markdown文件的實(shí)例代碼
- python 自動(dòng)化將markdown文件轉(zhuǎn)成html文件的方法
- python3處理word文檔實(shí)例分析
- Python word文本自動(dòng)化操作實(shí)現(xiàn)方法解析
- Python操作word文檔插入圖片和表格的實(shí)例演示
- Python實(shí)現(xiàn)Word文檔轉(zhuǎn)換Markdown的示例
相關(guān)文章
python計(jì)算數(shù)字或者數(shù)組的階乘的實(shí)現(xiàn)
本文主要介紹了python計(jì)算數(shù)字或者數(shù)組的階乘,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08終于明白tf.reduce_sum()函數(shù)和tf.reduce_mean()函數(shù)用法
這篇文章主要介紹了終于明白tf.reduce_sum()函數(shù)和tf.reduce_mean()函數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11Pytorch數(shù)據(jù)類(lèi)型Tensor張量操作的實(shí)現(xiàn)
本文主要介紹了Pytorch數(shù)據(jù)類(lèi)型Tensor張量操作的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Tensorflow 實(shí)現(xiàn)釋放內(nèi)存
今天小編就為大家分享一篇Tensorflow 實(shí)現(xiàn)釋放內(nèi)存,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02解決 jupyter notebook 回車(chē)換兩行問(wèn)題
這篇文章主要介紹了解決 jupyter notebook 回車(chē)換兩行問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04解決python-redis-lock分布式鎖的問(wèn)題
這篇文章主要介紹了python-redis-lock分布式鎖的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10Python使用VIF實(shí)現(xiàn)檢測(cè)多重共線性
多重共線性是指多元回歸模型中有兩個(gè)或兩個(gè)以上的自變量,它們之間具有高度的相關(guān)性,本文主要介紹了如何使用VIF實(shí)現(xiàn)檢測(cè)多重共線性,需要的可以參考下2023-12-12Python多線程結(jié)合隊(duì)列下載百度音樂(lè)的方法
這篇文章主要介紹了Python多線程結(jié)合隊(duì)列下載百度音樂(lè)的方法,實(shí)例分析了Python多線程及文件下載的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07