1. 程式人生 > >CCF Python題解(100分)201703-3 Markdown

CCF Python題解(100分)201703-3 Markdown

CCF Python題解(100分)201703-3 Markdown

import re

raw = ""

while True:
    try:
        inputStr = input()
        Str1 = re.sub("_(.*?)_", "<em>\g<1></em>", inputStr)  # re
        Str2 = re.sub("\[(.*?)\]\((.*?)\)", '<a href="\g<2>">\g<1></a>', Str1)

        raw +=
Str2 + '\n' except: break list1 = raw.split('\n') new = "" listflag = False graphflag = False for index in range(len(list1)): i = list1[index] list2 = i.split(' ', 1) if list2[0]: # 不為空 if list2[0] == '*': # 無序列表 if listflag == False: new +=
"<ul>\n" listflag = True new += "<li>" + list2[1] + "</li>\n" if not list1[index + 1].startswith('*'): new += "</ul>\n" listflag = False elif list2[0].count('#'): # 含# 標題 number = len(list2[
0]) new += "<h{}>{}</h{}>".format(str(number), list2[1], str(number)) + '\n' else: # 段落 if graphflag == False: new += "<p>" graphflag = True new += i if list1[index + 1].startswith('*') or list1[index + 1].startswith('#') or len(list1[index + 1]) == 0: new += "</p>" graphflag = False new += "\n" print(new.strip('\n'))