Python如何提取字符串内指定符号包裹的文本内容
自动答题程序题库内容提取方案
- 实现逻辑:先还原文件中的HTML转义字符,再通过正则匹配
<strong>标签包裹的内容即可,按照你给出的存储规则,第一个匹配结果为题干,后续匹配结果为对应选项组的正确答案。
示例内容翻译结果:
题干:完成以下陈述:物质从___(1)变为气态的过程叫做(2)___。
第一组选项正确答案:1:液态;2:蒸发
第二组选项正确答案:1:固态;2:升华
可直接使用的Python实现代码
import html import re def extract_single_question(raw_question_block): # 还原HTML转义字符 decoded_content = html.unescape(raw_question_block) # 匹配所有<strong>包裹的内容 bold_pattern = re.compile(r'<strong>(.*?)</strong>', re.DOTALL) match_results = bold_pattern.findall(decoded_content) if not match_results: return None return { "question": match_results[0].strip(), "answers": [item.strip() for item in match_results[1:]] } def batch_extract_qa(file_path): with open(file_path, "r", encoding="utf-8") as f: raw_file_content = f.read() # 按单题分隔符},拆分所有题目块,忽略最后多余的空块 question_blocks = raw_file_content.split("},")[:-1] qa_list = [] for block in question_blocks: qa_item = extract_single_question(block) if qa_item: qa_list.append(qa_item) return qa_list # 调用示例 if __name__ == "__main__": # 替换为你本地题库文件的实际路径 all_qa = batch_extract_qa("./local_question_bank.txt") # 打印测试 for idx, item in enumerate(all_qa): print(f"第{idx+1}题:{item['question']}") print(f"答案:{item['answers']}\n")
- 补充说明:如果遇到转义异常的特殊符号,可先对原始内容做
replace("\\", "")处理清除多余转义符后再解析。
内容的提问来源于stack exchange,提问作者Bigboyal
相关产品推荐
相关产品推荐

