使用Python來開發(fā)Markdown腳本擴(kuò)展的實(shí)例分享
關(guān)于Markdown
在剛才的導(dǎo)語里提到,Markdown 是一種用來寫作的輕量級「標(biāo)記語言」,它用簡潔的語法代替排版,而不像一般我們用的字處理軟件 Word 或 Pages 有大量的排版、字體設(shè)置。它使我們專心于碼字,用「標(biāo)記」語法,來代替常見的排版格式。例如此文從內(nèi)容到格式,甚至插圖,鍵盤就可以通通搞定了。目前來看,支持 Markdown 語法的編輯器有很多,包括很多網(wǎng)站(例如簡書)也支持了 Markdown 的文字錄入。Markdown 從寫作到完成,導(dǎo)出格式隨心所欲,你可以導(dǎo)出 HTML 格式的文件用來網(wǎng)站發(fā)布,也可以十分方便的導(dǎo)出 PDF 格式,這種格式寫出的簡歷更能得到 HR 的好感。甚至可以利用 CloudApp 這種云服務(wù)工具直接上傳至網(wǎng)頁用來分享你的文章,全球最大的輕博客平臺 Tumblr,也支持使用 Mou 這類 Markdown 工具進(jìn)行編輯并直接上傳。
python的markdown擴(kuò)展開發(fā)
近期使用python的markdown寫了一個(gè)文檔小程序,由于需要用到一些額外的功能,所以就對markdown進(jìn)行了一些簡單的擴(kuò)展,進(jìn)而記錄下編寫的模板。直接貼代碼:
#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ò)展主體類
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):
##注冊擴(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)容,可以查看官方文檔,不過沒有例子,只是手冊而已。但大體能知道有哪些內(nèi)容組成,在結(jié)合上面的文件結(jié)構(gòu)都是可以寫出來的。下面是調(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自動生成MySQL數(shù)據(jù)字典的markdown文本的實(shí)現(xiàn)
- python使用html2text庫實(shí)現(xiàn)從HTML轉(zhuǎn)markdown的方法詳解
- 解決python Markdown模塊亂碼的問題
- 如何用Python實(shí)現(xiàn)簡單的Markdown轉(zhuǎn)換器
- python導(dǎo)出chrome書簽到markdown文件的實(shí)例代碼
- python 自動化將markdown文件轉(zhuǎn)成html文件的方法
- python3處理word文檔實(shí)例分析
- Python word文本自動化操作實(shí)現(xiàn)方法解析
- Python操作word文檔插入圖片和表格的實(shí)例演示
- Python實(shí)現(xiàn)Word文檔轉(zhuǎn)換Markdown的示例
相關(guān)文章
Pandas index操作索引的實(shí)現(xiàn)
Pandas中的索引index用于選擇特定的行數(shù)和列數(shù),加快數(shù)據(jù)訪問速度,本文就來介紹一下index操作索引,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
pandas數(shù)據(jù)處理清洗實(shí)現(xiàn)中文地址拆分案例
因?yàn)楹罄m(xù)數(shù)據(jù)分析工作需要用到地理維度進(jìn)行分析,所以需要把login_place字段進(jìn)行拆分成:國家、省份、地區(qū)。感興趣的可以了解一下2021-06-06
Python機(jī)器學(xué)習(xí)入門(四)之Python選擇模型
這篇文章主要介紹了Python機(jī)器學(xué)習(xí)入門知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
Python 創(chuàng)建空的list,以及append用法講解
今天小編就為大家分享一篇Python 創(chuàng)建空的list,以及append用法講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
python用selenium打開瀏覽器后秒關(guān)閉瀏覽器的解決辦法
最近朋友在學(xué)Selenium的時(shí)候遇到一個(gè)問題,當(dāng)執(zhí)行完selenium程序后,瀏覽器會閃退也就是自動關(guān)閉,這篇文章主要給大家介紹了關(guān)于python用selenium打開瀏覽器后秒關(guān)閉瀏覽器的解決辦法,需要的朋友可以參考下2023-07-07
python的getattr和getattribute攔截內(nèi)置操作實(shí)現(xiàn)
在Python中,getattr和getattribute是用于動態(tài)屬性訪問和自定義屬性訪問行為的重要工具,本文主要介紹了python的getattr和getattribute攔截內(nèi)置操作實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01

