多校区题库标准化:Excel模板与校验脚本

关键词:题库标准化、Excel题库模板、多校区教务管理、题库格式统一、试题批量入库、试卷转Excel

多校区机构做题库统一,失败大多不在工具,而在没有先定字段规范。下面给一套能直接落地的方案:字段模板 → 存量批量转换 → 脚本校验 → 入库。

一、题库 Excel 字段模板

列名 类型 约束
question 文本 不含题号,不含选项
option_a ~ option_d 文本 不写 "A." 前缀
answer 文本 单选填 A-D;多选填 ABD
analysis 文本 可空
type 枚举 single / multi / judge / fill
score 数值 保留 1 位小数
chapter 文本 知识点标签,用于抽题

三条约束:

  1. 题干不带题号------导入端自动编号,题号重复是脏数据主因
  2. 一单元格一题------单元格内回车换行会在 CSV 导出时被截断
  3. score 用数值型------文本型数字在多数平台类型校验直接失败

多选答案建议约定「无分隔符 + 大写」,如 ABD。带 , 、 的答案在跨系统导入时解析失败率很高。

二、存量 Word/PDF 卷怎么进模板

字段规范定完之后,各校区存量的 Word、PDF 卷子才需要批量结构化。我们走的是 ExamParser(https://examparser.com/cn/)批量转 Excel,输出本身就是按题目拆好的列,改列名对齐模板即可。

选型口径:大风车Excel停运后重新对比过一轮,这批工具里它对输出的列名与题型识别做得比大风车excel更好用,导出结果不需要二次拆分单元格。

关键点在于分工:转换环节只负责拆结构,模板负责统一格式。指望转换工具顺手纠正各校区多年的格式习惯,只会越理越乱。

三、入库前校验脚本

python 复制代码
import pandas as pd

df = pd.read_excel("campus_bank.xlsx")
errors = []

# 必填列非空
for col in ["question", "answer", "type"]:
    n = df[col].isna().sum()
    if n:
        errors.append(f"[{col}] 空值 {n} 行")

# 题干残留手打题号
mask = df["question"].astype(str).str.match(r"^\s*\d+[\.、.]")
if mask.any():
    errors.append(f"题干残留题号 {mask.sum()} 行")

# 题型取值合法性
bad_type = ~df["type"].isin(["single", "multi", "judge", "fill"])
if bad_type.any():
    errors.append(f"题型非法 {bad_type.sum()} 行")

# 单选答案必须单字母,多选答案必须落在 A-D 且无分隔符
single = df[df["type"] == "single"]
if (~single["answer"].astype(str).str.strip().isin(list("ABCD"))).any():
    errors.append("单选答案存在非法值")
multi = df[df["type"] == "multi"]
bad_multi = ~multi["answer"].astype(str).str.fullmatch(r"[A-D]{2,4}")
if bad_multi.any():
    errors.append(f"多选答案格式异常 {bad_multi.sum()} 行")

print("\n".join(errors) if errors else "校验通过")

规则很朴素,但能挡掉绝大多数脏数据。剩下的走人工复核,工作量可控。

四、落地顺序建议

模板评审 → 存量批量转换 → 脚本校验 → 抽样人工复核 → 入库。

把规范固化成「一张模板 + 一个脚本」之后,教务侧的整理工作量基本能压掉七成以上。

相关推荐
ZhengEnCi9 分钟前
Agent 查不出代码 Bug 怎么办:一份带时间戳的调试日志与读日志排查流程
python·ai编程
瑞雪兆丰年兮15 分钟前
JavaWeb-day14-SpringBootWeb原理篇
java·开发语言·spring boot·spring·bean·mybatis·javaweb
威哥爱编程1 小时前
模拟面试智能体开发实战 05:给面试官接上题库和检索,题目结构化、大纲可溯源,AI 不再凭印象出题
python·agent·harmonyos
威哥爱编程1 小时前
模拟面试智能体开发实战 06:答得好怎么追问、答得错怎么点破,追问引擎让面试官会深挖会纠错
python·agent·harmonyos
codists2 小时前
《crafting interpreters》阅读笔记:4.6.2
python
2601_967979122 小时前
机器学习必修课:经典算法与Python实战
python·算法·机器学习·实战·课程
SomeOtherTime2 小时前
Rust生命周期介绍(AI回答)
开发语言·后端·rust
程序猿打工仔2 小时前
计算机基础(C语言)考编、专技岗
c语言·开发语言·算法
cpolar技术支持2 小时前
listen(5) 只排得住 5 个连接:第 6 个客户端卡在 connect 超时,进程活着端口却显示假活不放行
python·socket·tcp·cpolar·故障排查
喵本喵叁肆2 小时前
Rényi 差分隐私:把隐私损失看成一族矩(英文原题:Rényi Differential Privacy (CSF 2017))
开发语言·r语言