更新GenerateProblemListFromString2024功能, 和新的"新题比对"适配
This commit is contained in:
parent
c6cbfd6053
commit
2c8293d864
|
|
@ -268,6 +268,7 @@ def GenerateProblemListFromString2024(data): #从来自.tex文件的字符串生
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
data = re.sub(r"\n{2,}","\n",data)
|
data = re.sub(r"\n{2,}","\n",data)
|
||||||
|
data = re.sub(r"\\definecolor[^\n]*\n","\n",data)
|
||||||
data = re.sub(r"\\begin\{tcolorbox\}[\s\S]*?\\end\{tcolorbox\}","\n",data)
|
data = re.sub(r"\\begin\{tcolorbox\}[\s\S]*?\\end\{tcolorbox\}","\n",data)
|
||||||
data = re.sub(r"\\item",r"\\enditem\\item",data)
|
data = re.sub(r"\\item",r"\\enditem\\item",data)
|
||||||
data = re.sub(r"\\end\{enumerate\}",r"\\enditem",data) #切除无关信息, 保留关键信息
|
data = re.sub(r"\\end\{enumerate\}",r"\\enditem",data) #切除无关信息, 保留关键信息
|
||||||
|
|
@ -280,30 +281,28 @@ def GenerateProblemListFromString2024(data): #从来自.tex文件的字符串生
|
||||||
content_raw = re.sub(r"\n\%[\s\S]*$","",content_raw) #题目内容
|
content_raw = re.sub(r"\n\%[\s\S]*$","",content_raw) #题目内容
|
||||||
content_raw = re.sub(r"\\\\$","",content_raw) # 删去题目最后一行处可能存在的\\
|
content_raw = re.sub(r"\\\\$","",content_raw) # 删去题目最后一行处可能存在的\\
|
||||||
content_raw = content_raw.strip() # 删去前后多余的空格
|
content_raw = content_raw.strip() # 删去前后多余的空格
|
||||||
|
meta = {}
|
||||||
if not content_raw[0] == "[": # 根据方括号内的内容生成交互信息, 这是无方括号的内容, 无meta
|
if not content_raw[0] == "[": # 根据方括号内的内容生成交互信息, 这是无方括号的内容, 无meta
|
||||||
content = content_raw
|
content = content_raw
|
||||||
meta = {}
|
|
||||||
elif re.findall(r"^\[rep(\d+)\]",content_raw) != []: # 方括号以rep开始, 用已有的题号代替, 字典中显示唯一的题号
|
|
||||||
content = re.sub(r"^\[rep(\d+)\]","",content_raw).strip()
|
|
||||||
meta = {"rep":re.findall(r"\[rep(\d+)\]",content_raw)[0].zfill(6)}
|
|
||||||
else: # 方括号不以rep开始, 用s,r,u分别表示相同, 相关, 无关, 返回有这三个字段的字典
|
|
||||||
content = re.sub(r"^\[.*?\]","",content_raw).strip()
|
|
||||||
metaraw = re.findall(r"^\[(.*?)\]",content_raw)[0]
|
|
||||||
sameidraw = re.findall(r"s([\d,:]*)",metaraw)
|
|
||||||
if not sameidraw == []:
|
|
||||||
same_id_list = generate_number_set(sameidraw[0])
|
|
||||||
else:
|
else:
|
||||||
same_id_list = []
|
same_id_list = []
|
||||||
relatedidraw = re.findall(r"r([\d,:]*)",metaraw)
|
|
||||||
if not relatedidraw == []:
|
|
||||||
related_id_list = generate_number_set(relatedidraw[0])
|
|
||||||
else:
|
|
||||||
related_id_list = []
|
related_id_list = []
|
||||||
unrelatedidraw = re.findall(r"u([\d,:]*)",metaraw)
|
|
||||||
if not unrelatedidraw == []:
|
|
||||||
unrelated_id_list = generate_number_set(unrelatedidraw[0])
|
|
||||||
else:
|
|
||||||
unrelated_id_list = []
|
unrelated_id_list = []
|
||||||
|
content = re.sub(r"^\[rep(\d+)\]","",content_raw).strip()
|
||||||
|
metaraw = re.findall(r"\[.*\]",content_raw)[0]
|
||||||
|
metaraw = re.sub(r"[\[\]]","",metaraw)
|
||||||
|
metalist = metaraw.split(",")
|
||||||
|
for metaitem in metalist:
|
||||||
|
metaitem = metaitem.upper()
|
||||||
|
if metaitem.startswith("REP"):
|
||||||
|
meta = {"rep":metaitem[3:].zfill(6)}
|
||||||
|
elif metaitem.startswith("S"):
|
||||||
|
same_id_list.append(metaitem[1:].zfill(6))
|
||||||
|
elif metaitem.startswith("R"):
|
||||||
|
related_id_list.append(metaitem[1:].zfill(6))
|
||||||
|
elif metaitem.startswith("U"):
|
||||||
|
unrelated_id_list.append(metaitem[1:].zfill(6))
|
||||||
|
if not "rep" in meta:
|
||||||
meta = {"same":same_id_list,"related":related_id_list,"unrelated":unrelated_id_list}
|
meta = {"same":same_id_list,"related":related_id_list,"unrelated":unrelated_id_list}
|
||||||
subdata = data[:pos[0]] #开始寻找出处中缀
|
subdata = data[:pos[0]] #开始寻找出处中缀
|
||||||
suflist = re.findall(r"\n(\%\s{0,}[\S]+)\n",subdata)
|
suflist = re.findall(r"\n(\%\s{0,}[\S]+)\n",subdata)
|
||||||
|
|
|
||||||
Reference in New Issue