题库迁移实战: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 当成题库资产的标准载体,之后无论换哪个平台,成本都只是一次列映射脚本。

相关推荐
特立独行的猫A10 小时前
少 3 个环节、少 1 次 ABI、少 3500 行代码:cj-tauri 与 Ionic/Capacitor 的鸿蒙桥接机制对比
java·后端·python
特立独行的猫A10 小时前
cj-tauri vs Rust/Tauri 同款播放器实测:编译 21 秒 vs 11 分钟,磁盘 12 MB vs 1.2 GB
java·后端·python
duansamve11 小时前
详解Flask中Session和Cookie
python·flask
威哥爱编程11 小时前
模拟面试智能体开发实战 04:面试聊到哪算哪?用状态机把整场面试编排起来
python·agent·harmonyos
威哥爱编程11 小时前
模拟面试智能体开发实战 03:AI 面试官太客气?人设 Prompt 让它像个真考官
python·agent·harmonyos
量化分析码农11 小时前
股票数据接口返回字段逐项解析:从在线验证到 Python 数据校验
python
Dmz丶12 小时前
前端转 AI 100 天 Day 42:跨模型对比实战——用数据选模型,不靠“听说”
python
路溪非溪13 小时前
python标准库使用总结
开发语言·python
青少儿编程课堂13 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:折半搜索优化子集枚举(Meet in the Middle)解析
c++·python·算法·bfs·信息学竞赛
用户9562562542914 小时前
五分钟用 E2B SDK 打通沙箱:环境变量只改三行
python·api