国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用 Python 實現簡單的 Markdown 轉換器

OBKoro1 / 2158人閱讀

今天心血來潮,寫了一個 Markdown 轉換器。

import os, re,webbrowser
text = """
# TextHeader
    ## Header1
        List
            - 1 
            - 2
            - 3
        > **quote**
        》 quote2
    ## Header2
        1. *斜體*
        2. [@以茄之名](https://www.zhihu.com/people/e4f87c3476a926c1e2ef51b4fcd18fa3)
        3、 ![](https://pic4.zhimg.com/v2-8560440c136c746730a63813ed701f52_is.jpg)
        
    ## Header3 
        `*[文章地址](https://zhuanlan.zhihu.com/p/39742445)*`
        ·**code1**·
        - [x]是否點贊
"""

程序開頭先處理一些行內的語法,比如 code、strong、i 等,用正則直接替換:

text = re.sub(re.compile("([`·])([^`·]+)[`·]"), r"2", text)
text = re.sub(re.compile("**([^*]+)**"), r"1", text)
text = re.sub(re.compile("([^*])*([^*]+)*"), r"12", text)

接著是復雜一點的圖片和鏈接:

text = re.sub(re.compile("([^!])[([^]]+)](([^)]+))"),
              r"12", text)
text = re.sub(re.compile("![([^]]*)](([^)]+))"),
              r"
        %s
        """ % (p_html, line)

因為有序列表和無序列表的區別是頭尾的ol和ul,所以要用 list_flag 變量來判斷

elif re.match("[+-*] ", line):
    if list_flag == "":
        html += "
    " list_flag = "ul" line = re.sub("[+-*] ", "", line) html += "
  • %s
  • " % (line) elif re.match("[d]+[.、] ", line): if list_flag == "": list_flag = "ol" html += "
      " line = re.sub("[d]+[.、] ", "", line) html += "
    1. %s
    2. " % (line)

處理完后處理其他的語法:

else:
        if list_flag != "":
            html += "
" % list_flag
            list_flag = ""
        if re.match("#+", line):
            well = re.match("#+", line).group().count("#")
            line = re.sub("#+", "", line)
            html += "%s
" % (well, line, well)
        elif re.match("[>》 ]", line):
            line = re.sub("^s*[>》 ]", "", line)
            html += "
%s
" % (line) # elif re.match("[>》 ]", line): # line = re.sub("^s*[>》 ]", "", line) # html += "
%s
" % (line) else: html += line

這里我稍微修改了一點,讓 > 和 》 都可以轉換成引用,主要是切換中英文標點太難了。

然后就是添加 CSS,自己改了一點馬克飛象的進去,因為他的引用做得很漂亮:

with open("markdown.html", "w", encoding="utf-8")as f:
    f.write("""