import re def handle_report_content(param1, param2): """ 报告摘要部分数据处理 Parameters: param1: 报告模板 param2: 数据模板 Returns: result: 报告结果 """ report_content = param1['报告内容'] report_data = param2['报告模板'] for num in range(len(report_content)): p_value = report_content[num]['章节'] p_num = len(report_content[num]['章节内容']) for c_num in range(p_num): section = report_content[num]['章节内容'][c_num]['小节'] # 主要财务数据为表格 if section == '主要财务数据': report_content[num]['章节内容'][c_num]['小节内容'][2]['表格'] = report_data[num][p_value]['主要财务数据'] # 判断股东实力部分,如果返回数据长度为1则为自然人段落,长度为2为企业段落 elif section == '股东实力': if len(report_data[num][p_value][section]) == 1: p = report_content[num]['章节内容'][c_num]['小节内容'][2]['段落'] d = report_data[num][p_value][section][0] report_content[num]['章节内容'][c_num]['小节内容'][2]['段落'] = p.format(**d) del report_content[num]['章节内容'][c_num]['小节内容'][0] del report_content[num]['章节内容'][c_num]['小节内容'][1] else: del report_content[num]['章节内容'][c_num]['小节内容'][2] content_num = len(report_content[num]['章节内容'][c_num]['小节内容']) for cn in range(content_num): # 段落内容 p = report_content[num]['章节内容'][c_num]['小节内容'][cn]['段落'] d = report_data[num][p_value][section][cn] report_content[num]['章节内容'][c_num]['小节内容'][cn]['段落'] = p.format(**d) # 对外投资段落中,只需要处理第一段和第四段,其余都是表格描述语句 elif section == '对外投资': # 处理段落1 p_0 = report_content[num]['章节内容'][c_num]['小节内容'][0]['段落'] d_0 = report_data[num][p_value][section][0] report_content[num]['章节内容'][c_num]['小节内容'][0]['段落'] = p_0.format(**d_0) # 处理段落4-表格 report_content[num]['章节内容'][c_num]['小节内容'][4]['表格'] = report_data[num][p_value][section][1] elif section == '资质荣誉': # 如果资质荣誉无数据只显示第三段,有数据则删除第三段 if len(report_data[num][p_value][section]) == 1: del report_content[num]['章节内容'][c_num]['小节内容'][0] del report_content[num]['章节内容'][c_num]['小节内容'][1] del report_content[num]['章节内容'][c_num]['小节内容'][2] del report_content[num]['章节内容'][c_num]['小节内容'][3] del report_content[num]['章节内容'][c_num]['小节内容'][4] del report_content[num]['章节内容'][c_num]['小节内容'][5] else: # 处理段落1,判断是否有资质,有则显示这一段,没有则删除 if report_data[num][p_value][section][0]['Qualification'] == '无': del report_content[num]['章节内容'][c_num]['小节内容'][0] else: p_0 = report_content[num]['章节内容'][c_num]['小节内容'][0]['段落'] d_0 = report_data[num][p_value][section][0] report_content[num]['章节内容'][c_num]['小节内容'][0]['段落'] = p_0.format(**d_0) # 处理段落2之前需判断段落1是否被删除,删除索引都会随之变化 if len(report_content[num]['章节内容'][c_num]['小节内容']) == 7: # 处理段落2,判断是否有认证资质,有则显示这一段,没有则删除 if report_data[num][p_value][section][1]['Qualification_number'] > 0: p_2 = report_content[num]['章节内容'][c_num]['小节内容'][1]['段落'] d_2 = report_data[num][p_value][section][1] report_content[num]['章节内容'][c_num]['小节内容'][1]['段落'] = p_2.format(**d_2) else: del report_content[num]['章节内容'][c_num]['小节内容'][1] # 第一段被删除的情况 else: if report_data[num][p_value][section][0]['Qualification_number'] > 0: p_2 = report_content[num]['章节内容'][c_num]['小节内容'][0]['段落'] d_2 = report_data[num][p_value][section][1] report_content[num]['章节内容'][c_num]['小节内容'][0]['段落'] = p_2.format(**d_2) else: del report_content[num]['章节内容'][c_num]['小节内容'][0] # 处理之前先判断表格数据是否为空,再判断前两段是否已经被删除 if len(report_data[num][p_value][section][2]) > 1: if len(report_content[num]['章节内容'][c_num]['小节内容']) == 7: # 处理段落6-表格 report_content[num]['章节内容'][c_num]['小节内容'][5]['表格'] = report_data[num][p_value][section][2] elif len(report_content[num]['章节内容'][c_num]['小节内容']) == 6: report_content[num]['章节内容'][c_num]['小节内容'][4]['表格'] = report_data[num][p_value][section][2] elif len(report_content[num]['章节内容'][c_num]['小节内容']) == 5: report_content[num]['章节内容'][c_num]['小节内容'][3]['表格'] = report_data[num][p_value][section][2] length = len(report_content[num]['章节内容'][c_num]['小节内容'])-1 del report_content[num]['章节内容'][c_num]['小节内容'][length] elif section == '附录2 有关指标的计算公式' or section == '附录3 数字化综合信用等级评价级别释义': continue else: content_num = len(report_content[num]['章节内容'][c_num]['小节内容']) for cn in range(content_num): # 段落内容 p = report_content[num]['章节内容'][c_num]['小节内容'][cn]['段落'] d = report_data[num][p_value][section][cn] if d is None: continue else: report_content[num]['章节内容'][c_num]['小节内容'][cn]['段落'] = p.format(**d) return report_content