#!/usr/bin/env/python # -*- coding:utf-8 -*- """ 单题再解析、结构化 """ import re from structure.option import option_structure from utils.equation_extract import get_simpstr2eqn, get_equation_instr from utils.html_again_parse import css_label_wash from utils.washutil import base642img, css_conflict_deal, convert_huanhang, wash_after from utils.field_eq2latex import latex_wash from structure.dati2slave import get_slave def single_parse(one_item, item_type, wordid, source="zxhx", subject="数学"): """ rtype:题型 :return: """ # if re.search("选择|不定选择|多选|单选", rtype): # if "【选项】" not in one_item: # return "请不要将本编辑框自带的“【选项】、【答案】、【解析】”字段删除" # if "【答案】" not in one_item or "【解析】" not in one_item: # return "请不要将本编辑框自带的“【答案】、【解析】”字段删除" print("原始:") # print(one_item) one_item = css_label_wash(one_item) one_item = re.sub("|\s*|\n\s*)+<(/?table( .*?)?|/?tbody( .*?)?|/?t[rhd]( .*?)?)>\s*(\s*|\n\s*)+", r"<\2>", one_item) one_item = re.sub(r'(||)(|\n)+', r"\1", one_item, flags=re.S) one_item = re.sub(r"\\\(\s*{\s*\}\s*\\\)", "", one_item) one_item = re.sub(r"\\\(\s*\\\)", "", one_item) one_item = re.sub(r"\\\(\s*|\s*\\\)", "$", one_item) one_item = latex_wash(one_item, 1) res_list = re.split(r"(\n+【答案】|\n+【解析】)", one_item) if len(res_list) > 5: return "编辑后的文本出现多个【答案】或【解析】字段,请删除,每个字段只保留唯一且单独成行" elif len(res_list) < 5: res_list = re.split(r"(【答案】|【解析】)", one_item) if len(res_list) > 5: return "编辑后的文本出现多个【答案】或【解析】字段,请删除,每个字段只保留唯一且单独成行" # elif len(res_list) < 5: # return "编辑后的文本掉了【答案】或【解析】字段,请添加,每个字段保留唯一" new_item_struct = {"type": item_type} new_item_struct["key"] = "" new_item_struct["parse"] = "" new_item_struct["stem"] = res_list[0] if len(res_list) == 5: if res_list[1].strip() == "【答案】" and res_list[3].strip() == "【解析】": new_item_struct["key"] = res_list[2] new_item_struct["parse"] = res_list[4] elif res_list[1].strip() == "【解析】" and res_list[3].strip() == "【答案】": new_item_struct["key"] = res_list[4] new_item_struct["parse"] = res_list[2] else: return "编辑后的文本出现多个【答案】或【解析】字段,请修改,每个字段只保留唯一且单独成行" elif len(res_list) > 2: if res_list[1].strip() == "【答案】": new_item_struct["key"] = res_list[2] elif res_list[1].strip() == "【解析】": new_item_struct["parse"] = res_list[2] item_ids = re.findall("^([1-9][0-9]|[1-9])\s*[..、、]", new_item_struct["stem"].strip()) new_item_struct["item_id"] = int(item_ids[0]) if item_ids else 0 new_item_struct["stem"] = re.sub("^([1-9][0-9]|[1-9])\s*[..、、]", "", new_item_struct["stem"].strip()) if len(new_item_struct["stem"].strip()) < 3: return "题干为空,请补充完整" # 选项再解析 new_item_struct["errmsgs"] = [] if re.search("选择|不定选择|多选|单选", item_type): new_item_struct = option_structure(new_item_struct, new_item_struct["stem"], new_item_struct["key"], 1, 1) if new_item_struct["errmsgs"]: return ";;".join(new_item_struct["errmsgs"]) if 'options' in new_item_struct and any([True for i in new_item_struct['options'] if not i.replace(":", "").strip()]): # 空选项中:被当成了内容 return "存在选项为空,请补充完整" new_item_struct["answer_type"] = "选择题" elif ("数学" in subject or "物理" in subject) and source in ["school", "teacher", "xue_guan"]: pass # elif source in ["xue_guan", "teacher"] and subject not in ["数学", "物理"]: # 校本、教师、学管端不拆小题 else: new_item_struct = get_slave(new_item_struct, new_item_struct["stem"], new_item_struct["parse"], new_item_struct["key"]) new_item_struct = wash_after([new_item_struct], wordid, subject)[0] # 换行符替换 convert_huanhang(new_item_struct) # new_item_struct["stem"] = new_item_struct["stem"].strip().replace("\n\n", "\n").replace("\n", "
") # 2020/4/10 gai # new_item_struct["key"] = new_item_struct["key"].strip().replace("\n\n", "\n").replace("\n", "
") # new_item_struct["parse"] = new_item_struct["parse"].strip().replace("\n\n", "\n").replace("\n", "
") # if "options" in new_item_struct: # 对选项部分进行格式处理 get_equation_instr # for i in range(len(new_item_struct['options'])): # new_item_struct['options'][i] = new_item_struct['options'][i].strip().replace("\n\n", "\n")\ # .replace("\n", "
") new_item_struct["errmsgs"] = ";".join(new_item_struct["errmsgs"]) # print(new_item_struct) return new_item_struct if __name__ == '__main__': from pprint import pprint html = r'''
11.在2A(g)+B(g)3C(g)+4D(g)反应中,表示该反应速率最快的是

A、v(A)=8mol·L-1·min-1
B、v(B)=0.3mol·L-1·s-1
C、v(C)=0.6mol·L-1·s-1
D、v(D)=1mol·L-1·s-1
  •  
【答案】B
【解析】都换算成用B表示的速率,分别为:
A.v(B)=\(\frac{\text{8mol}\cdot {\text{L}}^{\text{-1}}·{\text{min}}^{\text{-1}}}{\text{2}×\text{60s}\cdot {\text{min}}^{\text{-1}}}\)=0.067 mol·L-1·s-1
B.v(B)=0.3mol·L-1·s-1
C.v(B)=\(\frac{\text{0}\text{.6mol}·{\text{L}}^{\text{-1}}·{\text{s}}^{\text{-1}}}{\text{3}}\)=0.2mol·L-1·s-1
D.v(B)=\(\frac{\text{1mol}·{\text{L}}^{\text{-1}}·{\text{s}}^{\text{-1}}}{\text{4}}\)=0.25mol·L-1·s-1;所以B选项最快,故选B。
【点睛】
比较用不同物质表示的反应速率快慢时,根据速率之比等于方程式的化学计量数之比,换算成用同一种物质表示的速率,同时还要注意单位的统一。
''' hml2 = """
7.农业生产中的一些栽培措施可以影响作物的生理活动,促进作物的生长发育,达到增加产量等目的。回答下列问题:
(1)中耕松土、科学施肥、合理灌溉等措施都能有效提高农作物的产量。中耕是指作物生长期中,在植株之间去除杂草并进行松土的一项栽培措施,该栽培措施对作物的作用有____________(答出1点即可)。农田施肥的同时,往往需要适当浇水,此时浇水的原因是____________________(答出1点即可)。
【答案】(1)减少杂草对水分、矿质元素和光的竞争增加土壤氧气含量,促进根系的呼吸作用 肥料中的矿质元素只有溶解在水中才能被作物根系吸收 (2)叶绿体类囊体薄膜 C5 叶绿体基质 (3)A和D 作物A光饱和点高且长得高,可利用上层光照进行光合作用;作物D光饱和点低且长得矮,与作物A间作后,能利用下层弱光进行光合作用
【解析】(1)去除杂草减小种间竞争,使作物有更多的营养物质并得到更多的光照,进行松土可以减少杂草对水分、矿质元素和光的竞争增加土壤氧气含量,促进根系的呼吸作用。农田施肥浇水可以降低肥料浓度,避免肥料浓度高导致植物失水过多,影响正常生长,另外肥料中的矿质元素只有溶解在水中才能被作物根系吸收。(2)在农作物叶肉细胞中,光合色素分布在叶绿体类囊体薄膜上;参与CO2固定的化学物质是C5,C5和CO2生成C3,为暗反应过程的酶在叶绿体基质中。(3)从提高光能利用率的角度考虑,种间套作一般高矮植株套作,高的植物对光能要求高,矮的植株对光能要求低。表中分析可得,作物A光饱和点高且长得高,可利用上层光照进行光合作用;作物D光饱和点低且长得矮,与作物A间作后,能利用下层弱光进行光合作用,故最适合进行间作的两种作物是A和D。
""" hml3="""
20.如图所示,竖直放置、导热良好的\(U\)形管内装有水银,右管封闭了一段长L=20cn
的空气柱,此时左、右两侧的水银面高度差为\({h_{1}=13cm}\)现从管的开口端慢慢倒入水银,最
终左管水银面比右管水银面高\({h_{2}=8\quad cm}\),环境温度始终不变,外界大气压po=
\({76cmHg_{\circ }}\)求:
(1)右管封闭空气柱的最终长度,
(2)加入的水银柱长度,
衡中]
同卷
【答案】B
【解析】15.解:(1)以封闭气体为研究对象,初态
\({j_{1}=b_{0}-ogh_{1}=63\quad cmHg,V_{1}=L}\)
末态
\({f_{2}=p_{0}+ogh_{2}=84cmg,V_{2}=L^{\prime },}\)
根据玻意耳定律
\({p_{1}V_{1}=p_{2}V_{2}}\)
解得\({L^{\prime }=15cm}\)
(2)右管中水银柱增加的长度
\({x_{1}=L-L^{\prime }=5\cot1}\)
左管中水银柱增加的长度
\({r_{2}=h_{1}+h_{2}+(L-L^{\prime })=26c}\)
加入的水银柱长度
\({x=x_{1}+x_{2}=31cm}\)
""" hml4 = r"""
19.下列离子方程式的书写及评价均合理的是
选项 离子方程式 评价
A \( \text{1 mol }{\text{Cl}}_{\text{2}} \)通入含\( \text{1 mol }{\text{FeI}}_{\text{2}} \)溶液中:\({\text{2Fe}}^{\text{2+}}{\text{+2I}}^{\text{-}}{\text{+2Cl}}_{\text{2}}{\text{=2Fe}}^{\text{3+}}{\text{+4Cl}}^{\text{-}}{\text{+I}}_{\text{2}}\) 正确;\({\text{Cl}}_{\text{2}}\)过量,可将\({\text{Fe}}^{\text{2+}}\)\({\text{I}}^{\text{-}}\)均氧化
B \( \text{1 mol}·{\text{L}}^{\text{-1}} \)\({\text{NaA1O}}_{\text{2}}\)溶液和\( \text{2.5 mol}·{\text{L}}^{\text{-1}} \)\(\text{HCl}\)溶液等体积均匀混合:\({\text{2AlO}}_{\text{2}}^{\text{-}}{\text{+5H}}^{\text{+}}{\text{=A1}}^{\text{3+}}{\text{+Al(OH)}}_{\text{3}}↓{\text{+H}}_{\text{2}}\text{O}\) 正确;\({\text{AlO}}_{\text{2}}^{\text{-}}\)\({\text{Al(OH)}}_{\text{3}}\)消耗的\({\text{H}}^{\text{+}}\)的物质的量之比为\(\text{2:3}\)
C 过量\({\text{SO}}_{\text{2}}\)通入\(\text{NaClO}\)溶液中:\({\text{SO}}_{\text{2}}{\text{+H}}_{\text{2}}{\text{O+ClO}}^{\text{-}}{\text{=HClO+HSO}}_{\text{3}}^{\text{-}}\) 正确;说明酸性:\({\text{H}}_{\text{2}}{\text{SO}}_{\text{3}}\)强于\(\text{HClO}\)
D \({\text{Mg(HCO}}_{\text{3}}{\text{)}}_{\text{2}}\)溶液与足量的\(\text{NaOH}\)溶液反应:\({\text{Mg}}^{\text{2+}}{\text{+HCO}}_{\text{3}}^{\text{-}}{\text{+OH}}^{\text{-}}{\text{=MgCO}}_{\text{3}}↓{\text{+H}}_{\text{2}}\text{O}\) 正确;酸式盐与碱反应生成正盐和水
  • A:\(A\)
  • B:\(B\)
  • C:\(C\)
  • D:\(D\)
【答案】B
【解析】A.将1molCl2通入到含1molFeI2溶液中,由于I-的还原性强于Fe2+,所以\( \text{1 mol }{\text{Cl}}_{\text{2}} \)只能将2molI-氧化,其正确的离子方程式为2I-+Cl2═2Cl-+I2,故A错误;
B.1mol/L的NaAlO2溶液和2.5mol/L的HCl溶液等体积互相均匀混合,设溶液体积为1L,偏铝酸钠和HCl的物质的量分别为1mol、2.5mol,1mol偏铝酸钠消耗1molHCl生成1mol氢氧化铝,剩余的1.5molHCl能够溶解0.5mol氢氧化铝,反应的离子方程式为\({\text{2AlO}}_{\text{2}}^{\text{-}}{\text{+5H}}^{\text{+}}{\text{=A1}}^{\text{3+}}{\text{+Al(OH)}}_{\text{3}}↓{\text{+H}}_{\text{2}}\text{O}\)\({\text{AlO}}_{\text{2}}^{\text{-}}\)\({\text{Al(OH)}}_{\text{3}}\)消耗的\({\text{H}}^{\text{+}}\)的物质的量之比为1:1.5=2:3,故B正确;
C.HClO有强氧化性,能够氧化SO2,正确的离子方程式为SO2+H2O+ClO-=Cl-+SO42-+2H+,故C错误;
D.Mg(HCO3)2溶液与足量的NaOH溶液反应,由于氢氧化镁比碳酸镁更难溶,所以反应生成氢氧化镁沉淀,其离子方程式为Mg2++2\({\text{HCO}}_{3}^{-}\)+4OH-=Mg(OH)2↓+2H2O+2\({\text{CO}}_{3}^{2-}\),故D错误;
答案为B。
""" aa = single_parse(hml4, "选择题", "456") pprint(aa) # tt = r""" # 25℃时,若测得HR溶液$\text{pH=a}$,取该溶液$\text{10}\text{.0mL}$,加蒸馏水稀释至$\text{100}\text{.0mL}$,测得$\text{pH=b,b-a<1}$,则HR是弱酸 # """ # # one_item = base642img(tt, "333333333") # one_item = css_conflict_deal(one_item) # print(one_item)