CCF Python題解(100分)201703-3 Markdown
阿新 • • 發佈:2018-11-13
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'))