在医疗、教育等领域,在线题库的内容往往以 JSON 等格式存储,手动整理成规范的 Word 文档耗时又易出错。今天就教大家用 Python 实现「题库 JSON 数据→标准化 Word 文档」的一键转换,以医疗类题库题目为例,高效搞定题库整理工作!
先看我们要处理的题库 JSON 数据格式(单题示例 1.json):
3 "questionCode": "E95D55F00S00T00L00B12C02S01Q0001",5 "title": "改变病情抗风湿药,下列哪项是错误的",7 "resolution": "双氯芬酸(扶他林)不能改变风湿病情。",10 "examCourseId": 175386,14 "questionTypeCode": "A1"我们需要把这些字段整理成 Word 里的规范格式,要求:
显示题目编号、题干
列出 A-E 所有选项
标注正确答案
补充解析内容
整体格式清晰、符合文档阅读习惯
首先安装所需 Python 库,python-docx是处理 Word 文档的核心库:
2from docx import Document3from docx.shared import Pt4from docx.enum.text import WD_PARAGRAPH_ALIGNMENT7def read_question_json(file_path):9 with open(file_path, 'r', encoding='utf-8') as f:10 question_data = json.load(f)14def generate_question_word(question_data, save_path):19 title = doc.add_heading('医学题库 - 单选题', level=1)20 title.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 居中对齐23 question_id = question_data.get('questionId')24 question_title = question_data.get('title')26 'A': question_data.get('itemA'),27 'B': question_data.get('itemB'),28 'C': question_data.get('itemC'),29 'D': question_data.get('itemD'),30 'E': question_data.get('itemE')32 answer = question_data.get('answer')33 resolution = question_data.get('resolution')37 question_paragraph = doc.add_paragraph()38 question_paragraph.add_run(f'【题目ID】{question_id}\n').bold = True39 question_paragraph.add_run(f'【题干】{question_title}')42 option_paragraph = doc.add_paragraph()43 option_paragraph.add_run('【选项】\n').bold = True44 for opt_key, opt_value in options.items():46 option_paragraph.add_run(f'{opt_key}:{opt_value}\n')49 answer_paragraph = doc.add_paragraph()50 answer_paragraph.add_run('【正确答案】').bold = True51 answer_paragraph.add_run(answer)54 reso_paragraph = doc.add_paragraph()55 reso_paragraph.add_run('【解析】').bold = True56 reso_paragraph.add_run(resolution)59 for paragraph in doc.paragraphs:60 for run in paragraph.runs:61 run.font.name = '微软雅黑'62 run.font.size = Pt(11)66 print(f'Word文档已生成:{save_path}')69if __name__ == '__main__':71 json_file_path = '1.json' # 你的题库JSON文件路径72 word_save_path = '医学题库题目.docx' # 生成的Word保存路径75 question_data = read_question_json(json_file_path)76 generate_question_word(question_data, word_save_path)1.批量处理:如果有多个题目 JSON 文件(如 2.json、3.json),可遍历文件夹读取所有 JSON,循环生成 Word(或合并到同一个 Word):
4def batch_generate_word(json_folder, save_folder):5 if not os.path.exists(save_folder):6 os.makedirs(save_folder)8 for file_name in os.listdir(json_folder):9 if file_name.endswith('.json'):10 json_path = os.path.join(json_folder, file_name)11 question_data = read_question_json(json_path)12 word_name = f'题目_{question_data.get("questionId")}.docx'13 word_path = os.path.join(save_folder, word_name)14 generate_question_word(question_data, word_path)17# batch_generate_word('题库JSON文件夹', '生成的Word文件夹')2.格式增强:可添加分页符(doc.add_page_break())、设置段落间距、添加边框等,进一步美化文档;
3.异常处理:添加 try-except 块,处理 JSON 解析失败、文件保存失败等异常,提升代码健壮性。
生成的 Word 文档结构清晰,内容规范:
用 Python 的python-docx库处理题库导出,既能摆脱手动整理的繁琐,又能保证文档格式的统一性。无论是医疗题库、教育题库,只要调整字段映射逻辑,就能快速适配不同类型的题库导出需求。掌握这个小技巧,日常办公效率直接拉满!
如果需要处理更复杂的题库格式(如多选题、判断题),或者想把导出的 Word 批量转为 PDF,欢迎在评论区留言,后续会继续分享相关实操技巧~