当前位置:首页>python>Python 实操|在线题库一键导出规范 Word 文档

Python 实操|在线题库一键导出规范 Word 文档

  • 2026-09-10 09:33:20
Python 实操|在线题库一键导出规范 Word 文档

在医疗、教育等领域,在线题库的内容往往以 JSON 等格式存储,手动整理成规范的 Word 文档耗时又易出错。今天就教大家用 Python 实现「题库 JSON 数据→标准化 Word 文档」的一键转换,以医疗类题库题目为例,高效搞定题库整理工作!

一、需求分析

先看我们要处理的题库 JSON 数据格式(单题示例 1.json):

📝 代码
1{
2  "questionId": 8488936,
3  "questionCode": "E95D55F00S00T00L00B12C02S01Q0001",
4  "itemD": "氯喹或羟氯喹",
5  "title": "改变病情抗风湿药,下列哪项是错误的",
6  "itemC": "环磷酰胺",
7  "resolution": "双氯芬酸(扶他林)不能改变风湿病情。",
8  "itemE": "双氯芬酸(扶他林)",
9  "itemB": "硫唑嘌呤",
10  "examCourseId": 175386,
11  "itemA": "甲氨蝶呤",
12  "answer": "E",
13  "hospitalId": 1184,
14  "questionTypeCode": "A1"
15}

我们需要把这些字段整理成 Word 里的规范格式,要求:

  • 显示题目编号、题干

  • 列出 A-E 所有选项

  • 标注正确答案

  • 补充解析内容

  • 整体格式清晰、符合文档阅读习惯

二、准备工作

首先安装所需 Python 库,python-docx是处理 Word 文档的核心库:

📝 代码
1pip install python-docx
三、核心代码实现
1. 完整代码
📝 代码
1import json
2from docx import Document
3from docx.shared import Pt
4from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
5
6# 1. 读取JSON题库数据
7def read_question_json(file_path):
8    """读取单个题目JSON文件"""
9    with open(file_path, 'r', encoding='utf-8') as f:
10        question_data = json.load(f)
11    return question_data
12
13# 2. 生成规范Word文档
14def generate_question_word(question_data, save_path):
15    # 创建文档对象
16    doc = Document()
17
18    # 设置文档标题
19    title = doc.add_heading('医学题库 - 单选题', level=1)
20    title.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER  # 居中对齐
21
22    # 提取题目核心信息
23    question_id = question_data.get('questionId')
24    question_title = question_data.get('title')
25    options = {
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')
31    }
32    answer = question_data.get('answer')
33    resolution = question_data.get('resolution')
34
35    # 添加题目内容
36    # 题目编号+题干
37    question_paragraph = doc.add_paragraph()
38    question_paragraph.add_run(f'【题目ID】{question_id}\n').bold = True
39    question_paragraph.add_run(f'【题干】{question_title}')
40
41    # 选项
42    option_paragraph = doc.add_paragraph()
43    option_paragraph.add_run('【选项】\n').bold = True
44    for opt_key, opt_value in options.items():
45        if opt_value:  # 避免空选项
46            option_paragraph.add_run(f'{opt_key}:{opt_value}\n')
47
48    # 正确答案
49    answer_paragraph = doc.add_paragraph()
50    answer_paragraph.add_run('【正确答案】').bold = True
51    answer_paragraph.add_run(answer)
52
53    # 解析
54    reso_paragraph = doc.add_paragraph()
55    reso_paragraph.add_run('【解析】').bold = True
56    reso_paragraph.add_run(resolution)
57
58    # 设置字体和字号(统一格式)
59    for paragraph in doc.paragraphs:
60        for run in paragraph.runs:
61            run.font.name = '微软雅黑'
62            run.font.size = Pt(11)
63
64    # 保存文档
65    doc.save(save_path)
66    print(f'Word文档已生成:{save_path}')
67
68# 3. 主函数执行
69if __name__ == '__main__':
70    # 配置文件路径
71    json_file_path = '1.json'  # 你的题库JSON文件路径
72    word_save_path = '医学题库题目.docx'  # 生成的Word保存路径
73
74    # 执行流程
75    question_data = read_question_json(json_file_path)
76    generate_question_word(question_data, word_save_path)
2. 代码说明
  • 数据读取:read_question_json函数读取 JSON 文件,解析出题目字典数据;

  • 文档构建:generate_question_word函数完成 Word 文档的核心生成逻辑:

    • 创建文档并设置居中标题;

    • 提取题干、选项、答案、解析等核心字段;

    • 按「题目 ID→题干→选项→答案→解析」的逻辑组织内容,给关键标签(如【选项】)加黑;

    • 统一设置字体为微软雅黑、字号 11 号,保证格式规范;

  • 执行逻辑:主函数指定文件路径,一键完成转换。

四、扩展优化

1.批量处理:如果有多个题目 JSON 文件(如 2.json、3.json),可遍历文件夹读取所有 JSON,循环生成 Word(或合并到同一个 Word):

📝 代码
1import os
2
3# 批量处理文件夹下所有JSON题库文件
4def batch_generate_word(json_folder, save_folder):
5    if not os.path.exists(save_folder):
6        os.makedirs(save_folder)
7
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)
15
16# 调用示例
17# batch_generate_word('题库JSON文件夹', '生成的Word文件夹')

2.格式增强:可添加分页符(doc.add_page_break())、设置段落间距、添加边框等,进一步美化文档;

3.异常处理:添加 try-except 块,处理 JSON 解析失败、文件保存失败等异常,提升代码健壮性。

五、最终效果

生成的 Word 文档结构清晰,内容规范:

📝 代码
1【题目ID】8488936
2【题干】改变病情抗风湿药,下列哪项是错误的
3【选项】
4A:甲氨蝶呤
5B:硫唑嘌呤
6C:环磷酰胺
7D:氯喹或羟氯喹
8E:双氯芬酸(扶他林)
9【正确答案】E
10【解析】双氯芬酸(扶他林)不能改变风湿病情。
总结

用 Python 的python-docx库处理题库导出,既能摆脱手动整理的繁琐,又能保证文档格式的统一性。无论是医疗题库、教育题库,只要调整字段映射逻辑,就能快速适配不同类型的题库导出需求。掌握这个小技巧,日常办公效率直接拉满!

如果需要处理更复杂的题库格式(如多选题、判断题),或者想把导出的 Word 批量转为 PDF,欢迎在评论区留言,后续会继续分享相关实操技巧~

推荐阅读

最新文章

随机文章