题库迁移实战:Excel中间格式与列映射

关键词:题库迁移、旧系统题库导出、在线考试平台切换、Excel中间格式、试题批量导入、企业培训系统升级

系统可以换,题库不能清。迁移的核心不是"导出来",而是拿到结构化数据 + 做一次列映射。

一、为什么中间格式要用 Excel

老系统导出格式 能否机器解析 结论
PDF 否(版面信息,无字段) 需先结构化
Word (docx) 半结构化,段落无字段语义 需解析拆题
Excel / CSV 是 可直接映射
JSON 是 最优,但多数老系统不给

结论:中间格式统一收敛到 Excel(或 CSV),无论源端是 PDF、Word 还是数据库 dump,最终都落到同一张表再做映射,迁移脚本只需要维护一份。

老系统只能导出 Word 卷时,我们这一步用 ExamParser(https://examparser.com/cn/)批量把 docx 转成结构化 Excel,输出即题干/选项/答案分列。当年大风车Excel停运后重新选型,其在批量吞吐和列名可对齐上比大风车excel更好用,几百份卷子两三天跑完。

二、列映射表

映射表先评审再写脚本,能省掉大量返工:

源字段 目标字段 转换规则
题型「判断题」 type 映射为 judge
答案「对/错/√/×」 answer 归一为 true / false
答案「A,B」 answer 去分隔符、大写 → AB
自由文本知识点 chapter 需人工归并同义词后入受控词表
空解析 analysis 允许空,迁移后补录

三、映射与清洗代码

python 复制代码
import pandas as pd

df = pd.read_excel("old_bank.xlsx")

TYPE_MAP = {"单选": "single", "多选": "multi", "判断": "judge", "填空": "fill"}
ANS_MAP = {"对": "true", "错": "false", "√": "true", "×": "false", "T": "true", "F": "false"}

out = pd.DataFrame()
out["stem"] = df["question"].astype(str).str.strip()
out["type"] = df["type"].str.strip().map(TYPE_MAP).fillna("single")
out["answer"] = df["answer"].astype(str).str.strip().replace(ANS_MAP)

# 多选:去所有分隔符并大写
m = out["type"] == "multi"
out.loc[m, "answer"] = (
    out.loc[m, "answer"].str.replace(r"[,,、\s]+", "", regex=True).str.upper()
)

# 判断题:兜底归一
j = out["type"] == "judge"
out.loc[j, "answer"] = out.loc[j, "answer"].where(
    out.loc[j, "answer"].isin(["true", "false"]), "False"
)

out.to_excel("new_platform_template.xlsx", index=False)
print(f"输出 {len(out)} 题")

跑完必须抽样人工核对两类:多选题答案顺序 、判断题归一结果,这两类在迁移中出错率最高。

四、验收清单

  • 总数核对:转换数 − 剔除数 = 入库数
  • 每种题型抽 20 题逐项比对题干/选项/答案
  • 含图题目单独核对附件完整性
  • 用迁移后的题库跑一次完整模拟考试
  • 老系统数据冷存档 ≥ 6 个月

五、小结

把 Excel 当成题库资产的标准载体,之后无论换哪个平台,成本都只是一次列映射脚本。

相关推荐
爱上纯净的蓝天4 小时前
不用云做 RAG:一个本地笔记问答工具的取舍与坑
python·开源·大模型·rag·本地部署
cspttty5 小时前
2027风险管理岗准备路线:数学与应用数学如何补齐金融、SQL与Python
开发语言·python·金融
用户8356290780515 小时前
如何使用 Python 格式化 Excel 单元格中的长文本
后端·python
我命由我123455 小时前
Python 开发 - Python 的 pathlib
java·开发语言·后端·python·学习·java-ee·学习方法
严谨的麻辣烫5 小时前
Python HTTP 连接池怎么用?从连接复用到请求异常排查
开发语言·python·http·requests·网络排查
摇滚侠5 小时前
《Java并发编程之美》第 4 章 Java 并发包中原子操作类原理剖析 阅读笔记 7
java·笔记·python
用户8356290780515 小时前
如何使用 Python 在 Word 文档中创建和格式化列表
后端·python
GIoT80105 小时前
网络出口如何选择?固定 IP 与 IP 轮换的原理及实践
python
羡林i6 小时前
ProcessPoolExecutor 传参踩坑实测:pickle 失败的四种写法
python
Dmz丶6 小时前
前端转 AI 100 天 Day 30:正式上线——从零部署一个完整服务(含 30 天复盘)
python