酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

import re import json from html import unescape def parse_exam_html(html_content): print(f"HTML内容长度: {len(html_content)}") # 尝试提取所有题目信息 questions = [] # 处理document.write内容 doc_write_re = re.compile( r'document\.write\(\s*([\'"])(.*?)\1\s*\);', re.DOTALL | re.IGNORECASE ) # 提取所有document.write内容并合并 all_contents = [] for match in doc_write_re.finditer(html_content): content = match.group(2) content = unescape(content)

我注意到这段代码是用来解析HTML格式的考试题目的,以下是我的分析和建议: 1. 代码结构问题: - 缺少对`l`变量的定义,在最后添加题目时使用了未定义的`l`变量,应该使用`len(questions)` - 缺少对解析结果的返回语句,应该在函数最后添加`return questions` 2. 正则表达式优化: - 当前的正则表达式较为复杂且难以维护,建议拆分成多个小正则表达式 - 可以添加更多错误处理和日志记录,帮助调试解析问题 3. 改进建议: ```python # 在函数开头添加类型提示 def parse_exam_html(html_content: str) -> list[dict]: """解析HTML格式的考试题目 Args: html_content: 包含考试题目的HTML内容 Returns: 解析后的题目列表,每个题目是一个字典 """ questions = [] # ...原有代码... # 修复最后的变量名错误 questions.append({ "q_id": f"auto_{len(questions) + 1}", # 修复这里使用len(questions)而不是未定义的l "question": question, "options": options, "ansopt": ansopt, "answer": answer_text, "score": score }) return questions # 添加返回语句 ``` 4. 其他改进点: - 可以添加对题目类型的识别(单选/多选) - 可以添加对图片题目和公式题目的支持 - 可以添加对题目分类的支持 5. 需要注意的逻辑点: - 处理HTML转义字符时需要考虑多种编码情况 - 正则表达式匹配可能存在贪婪匹配问题,需要测试边界情况 - 不同网站的HTML结构可能不同,需要灵活调整正则表达式 [2025-05-13 09:40:43 | AI写代码神器 | 384点数解答]

相关提问