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'))

猜你喜欢

转载自blog.csdn.net/qq_39577481/article/details/83988441