From d924bfc356910ed52842e97fd268e6af7329fa00 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Thu, 6 Mar 2025 17:35:01 +0800 Subject: [PATCH] 'commit' --- AI/AiService/HuangHaiTest.py | 62 ++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/AI/AiService/HuangHaiTest.py b/AI/AiService/HuangHaiTest.py index 87aa0697..33831073 100644 --- a/AI/AiService/HuangHaiTest.py +++ b/AI/AiService/HuangHaiTest.py @@ -65,6 +65,65 @@ def extract_level2_titles(markdown_content): return unique_matches # 返回去重后的二级目录标题数组 +def extract_level2_and_level3(markdown_content): + """ + 遍历输出所有二级目录及其三级目录,并生成指定格式的 JSON 对象 + """ + # 使用正则表达式匹配所有二级目录和三级目录及其内容 + matches = re.findall(r'^(##|###)\s+(.+)$|^-\s+(.+)$', markdown_content, re.MULTILINE) + + # 遍历匹配结果,组织层级关系 + current_level2 = None + current_level3 = None + level3_items = [] # 用于存储三级目录下的内容 + + for level, title, item in matches: + if level == '##': # 二级目录 + if current_level2: + print() # 输出空行分隔不同的二级目录 + current_level2 = title + # 生成二级目录的 JSON 对象 + level2_json = { + "type": "transition", + "data": { + "title": current_level2, + "text": current_level2 + } + } + print(json.dumps(level2_json, ensure_ascii=False)) + elif level == '###': # 三级目录 + if current_level3 and level3_items: + # 生成三级目录的 JSON 对象 + level3_json = { + "type": "content", + "data": { + "title": current_level3, + "text": current_level3, + "items": level3_items + } + } + print(json.dumps(level3_json, ensure_ascii=False)) + level3_items = [] # 清空三级目录下的内容 + current_level3 = title + elif item: # 三级目录下的内容 + # 去掉内容中的 "-" 符号 + cleaned_item = item.lstrip('- ').strip() + # 生成三级目录下内容的 JSON 对象 + item_json = {"title": cleaned_item, "text": cleaned_item} + level3_items.append(item_json) + + # 处理最后一个三级目录 + if current_level3 and level3_items: + level3_json = { + "type": "content", + "data": { + "title": current_level3, + "text": current_level3, + "items": level3_items + } + } + print(json.dumps(level3_json, ensure_ascii=False)) + # 运行应用 if __name__ == "__main__": # 使用 asyncio.run 运行异步函数 @@ -83,3 +142,6 @@ if __name__ == "__main__": contents = extract_level2_titles(markdown_content) ret = {"type": "contents", "data": {"items": contents}} print(json.dumps(ret, ensure_ascii=False)) + + # 二级目录和三级目录 + extract_level2_and_level3(markdown_content) \ No newline at end of file