最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python來(lái)開發(fā)Markdown腳本擴(kuò)展的實(shí)例分享

 更新時(shí)間:2016年03月04日 15:11:42   作者:像風(fēng)一樣的自由  
這篇文章主要介紹了使用Python來(lái)開發(fā)Markdown腳本擴(kuò)展的實(shí)例分享,文中的示例是用來(lái)簡(jiǎn)單地轉(zhuǎn)換文檔結(jié)構(gòu),主要為了體現(xiàn)一個(gè)思路,需要的朋友可以參考下

關(guān)于Markdown

在剛才的導(dǎo)語(yǔ)里提到,Markdown 是一種用來(lái)寫作的輕量級(jí)「標(biāo)記語(yǔ)言」,它用簡(jiǎn)潔的語(yǔ)法代替排版,而不像一般我們用的字處理軟件 Word 或 Pages 有大量的排版、字體設(shè)置。它使我們專心于碼字,用「標(biāo)記」語(yǔ)法,來(lái)代替常見的排版格式。例如此文從內(nèi)容到格式,甚至插圖,鍵盤就可以通通搞定了。目前來(lái)看,支持 Markdown 語(yǔ)法的編輯器有很多,包括很多網(wǎng)站(例如簡(jiǎn)書)也支持了 Markdown 的文字錄入。Markdown 從寫作到完成,導(dǎo)出格式隨心所欲,你可以導(dǎo)出 HTML 格式的文件用來(lái)網(wǎng)站發(fā)布,也可以十分方便的導(dǎo)出 PDF 格式,這種格式寫出的簡(jiǎn)歷更能得到 HR 的好感。甚至可以利用 CloudApp 這種云服務(wù)工具直接上傳至網(wǎng)頁(yè)用來(lái)分享你的文章,全球最大的輕博客平臺(tái) Tumblr,也支持使用 Mou 這類 Markdown 工具進(jìn)行編輯并直接上傳。

python的markdown擴(kuò)展開發(fā)
近期使用python的markdown寫了一個(gè)文檔小程序,由于需要用到一些額外的功能,所以就對(duì)markdown進(jìn)行了一些簡(jiǎ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): 
    ##注冊(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ò)沒有例子,只是手冊(cè)而已。但大體能知道有哪些內(nèi)容組成,在結(jié)合上面的文件結(jié)構(gòu)都是可以寫出來(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> 

201634150936573.png (863×488)

相關(guān)文章

  • Django 對(duì)IP訪問(wèn)頻率進(jìn)行限制的例子

    Django 對(duì)IP訪問(wèn)頻率進(jìn)行限制的例子

    今天小編就為大家分享一篇Django 對(duì)IP訪問(wèn)頻率進(jìn)行限制的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • Pandas index操作索引的實(shí)現(xiàn)

    Pandas index操作索引的實(shí)現(xiàn)

    Pandas中的索引index用于選擇特定的行數(shù)和列數(shù),加快數(shù)據(jù)訪問(wèn)速度,本文就來(lái)介紹一下index操作索引,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • pandas數(shù)據(jù)處理清洗實(shí)現(xiàn)中文地址拆分案例

    pandas數(shù)據(jù)處理清洗實(shí)現(xiàn)中文地址拆分案例

    因?yàn)楹罄m(xù)數(shù)據(jù)分析工作需要用到地理維度進(jìn)行分析,所以需要把login_place字段進(jìn)行拆分成:國(guó)家、省份、地區(qū)。感興趣的可以了解一下
    2021-06-06
  • Python中sys模塊功能與用法實(shí)例詳解

    Python中sys模塊功能與用法實(shí)例詳解

    這篇文章主要介紹了Python中sys模塊功能與用法,結(jié)合實(shí)例形式詳細(xì)分析了Python sys模塊基本功能、原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • Python機(jī)器學(xué)習(xí)入門(四)之Python選擇模型

    Python機(jī)器學(xué)習(xí)入門(四)之Python選擇模型

    這篇文章主要介紹了Python機(jī)器學(xué)習(xí)入門知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • python是否適合網(wǎng)頁(yè)編程詳解

    python是否適合網(wǎng)頁(yè)編程詳解

    在本篇文章里我們給各位整理了一篇關(guān)于python是否適合網(wǎng)頁(yè)編程詳解內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2019-10-10
  • 使用Python 自動(dòng)生成 Word 文檔的教程

    使用Python 自動(dòng)生成 Word 文檔的教程

    今天小編就為大家分享一篇使用Python 自動(dòng)生成 Word 文檔的教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python 創(chuàng)建空的list,以及append用法講解

    Python 創(chuàng)建空的list,以及append用法講解

    今天小編就為大家分享一篇Python 創(chuàng)建空的list,以及append用法講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • python用selenium打開瀏覽器后秒關(guān)閉瀏覽器的解決辦法

    python用selenium打開瀏覽器后秒關(guān)閉瀏覽器的解決辦法

    最近朋友在學(xué)Selenium的時(shí)候遇到一個(gè)問(wèn)題,當(dāng)執(zhí)行完selenium程序后,瀏覽器會(huì)閃退也就是自動(dòng)關(guān)閉,這篇文章主要給大家介紹了關(guān)于python用selenium打開瀏覽器后秒關(guān)閉瀏覽器的解決辦法,需要的朋友可以參考下
    2023-07-07
  • python的getattr和getattribute攔截內(nèi)置操作實(shí)現(xiàn)

    python的getattr和getattribute攔截內(nèi)置操作實(shí)現(xiàn)

    在Python中,getattr和getattribute是用于動(dòng)態(tài)屬性訪問(wèn)和自定義屬性訪問(wèn)行為的重要工具,本文主要介紹了python的getattr和getattribute攔截內(nèi)置操作實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01

最新評(píng)論

海宁市| 若尔盖县| 阜城县| 乌鲁木齐县| 县级市| 荥经县| 德州市| 富平县| 安岳县| 古浪县| 成都市| 武夷山市| 浦县| 武夷山市| 会东县| 广元市| 本溪市| 定南县| 和田市| 雅江县| 中西区| 泽普县| 盘锦市| 满洲里市| 清水河县| 瑞金市| 晋江市| 岱山县| 彭山县| 望城县| 无锡市| 孝义市| 松潘县| 孙吴县| 全椒县| 吉林省| 晋中市| 云南省| 井陉县| 钟祥市| 台中市|