一、前言
内部培训会有Word版本题库,考核时如果使用Word、Excel、PDF等文档进行关键字查询题目体验不佳。so,撸个软件吧!
20240728更新:支持更多题库类型。
二、Word题库转Excel
1、Word题库格式要求
内容 | 格式要求 | 事例 |
---|---|---|
题目 | 数字+中文顿号 | 1、我是题目 |
选项 | 英文字母+英文点 | A.我是选项 |
答案 | 中文汉字+英文冒号 | 答案:我是答案 |
2、Word题库支持题型
支持题型 | 答案要求 |
---|---|
单项选择题 | 单个英文字母 |
多项选择题 | 多个不重复英文字母 |
判断题 | ‘√’, ‘×’, ‘对’, ‘错’ |
填空题、问答题等 | 单一非空字符串(如多个填空,需把答案组合为一条记录) |
3、Word题库内容展示
4、Python转换代码
# -*- coding: cp936 -*-import docx
import openpyxl
import redef check_answer_type(answer_index):if answer_index.encode().isalpha() and len(answer_index) == 1:#单选answers.append(options_dict.get(answer_index, "Unknown"))questions_type.append("单选题")elif answer_index.encode().isalpha():#多选answers.append('\r\n'.join([options_dict.get(char, "Unknown") for char in answer_index]))questions_type.append("多选题")elif answer_index in ['√', '×', '对', '错']:#判断questions_type.append("判断题")answers.append(answer_index)else:#其他,填空/问答等questions_type.append("其他题")answers.append(answer_index)doc_path = input("输入Word文件路径:")
wb_path = input("输入Excel文件路径:")questions = []
questions_type = []
options_dict = {}
options_count = []
answers = []
answers_count = []try:# 读取Word文档doc = docx.Document(doc_path)for para in doc.paragraphs:if para.text.strip() == "":#空行continueelif re.match(r'^\d+、', para.text):#题目,数字+、print(f"正在读取:{para.text}")questions.append(para.text.strip())elif re.match(r'^[A-Z]\.', para.text):#选项,字母+.options_dict[para.text.split(".")[0].strip()] = para.text.split(".")[1].strip()elif re.match(r'^答案:', para.text):#答案,答案+:answer_index = para.text.split(":")[1].strip()check_answer_type(answer_index)options_count.append(len(options_dict))answers_count.append(len(answer_index))options_dict.clear()else:raise ValueError(f"格式错误:{para.text}")# 创建一个Excel工作簿wb = openpyxl.Workbook()ws = wb.activews.title = "题目及答案"ws['A1'] = '题目'ws['B1'] = '答案'ws['C1'] = '题目类型'ws['D1'] = '选择项个数'ws['E1'] = '答案个数或长度'# 将题目和答案写入Excel文件for i in range(len(questions)):ws[f'A{i+2}'] = questions[i]ws[f'B{i+2}'] = answers[i]ws[f'C{i+2}'] = questions_type[i]ws[f'D{i+2}'] = options_count[i]ws[f'E{i+2}'] = answers_count[i]# 保存Excel文件wb.save(wb_path)print("转换完成:题目和答案已成功写入Excel文件。")except Exception as e:print(f"发生错误:{e}")input("按任意键退出...")
5、Python打包程序下载
🔗下载链接。
6、运行报错及解决方法
软件如若报错,打开Word题库,定位到出错的位置,检查修改至满足上诉格式要求。
7、已知问题
因Word题库格式存在的不确定性,难免有不可预见问题。如若软件提示转换完成,请检查核对生成Excel题库文件的正确性。
三、关键字快速查询题库
1、Excel题库格式说明
Excel题库可用上述软件转换,也可自行制作(自行制作,仅需制作A列、B列即可)。
列数 | 内容 | 软件读取列 |
---|---|---|
A列 | 题目 | 读取 |
B列 | 正确答案 | 读取 |
C列 | 题目类型 | 不读取 |
D列 | 选择项个数 | 不读取 |
E列 | 答案个数或长度 | 不读取 |
2、转换Excel题库检查说明
使用转换方式获取Excel题库,请自行检查核对生成Excel题库文件的正确性,包括并不限于仅检查以下内容。
题型 | 检查内容 |
---|---|
单选题 | 筛选检查选项个数是否存在遗漏,答案个数是否为1 |
多选题 | 筛选检查选项个数是否存在遗漏 |
判断题 | 筛选检查选项个数是否为0,答案个数是否为1,答案格式是否正确 |
其他题 | 筛选检查选项个数是否为0,答案长度是否大于0 |
检查有效行数与Word题库数量是否一致 | |
检查题目、答案是否有误 |
3、Excel题库内容展示
4、软件下载
🔗下载链接。
5、软件使用
①启动软件,并打开题库
②查询方式
查询方式 | 说明 |
---|---|
输入关键字,点击按钮查询 | 前台查询 |
输入关键字,按键“ALT+S”查询 | 前台查询 |
复制关键字,按键“CTRL+X”查询 | 全局查询 |
③查询结果仅为1题时,效果展示
④查询结果为多题时,效果展示(在软件左侧上部分点击选择或输入更多关键字查询)
⑤查询结果为空时,效果展示
⑥查询题目重复,效果展示
四、补充说明
1、“Word题库转Excel”开发环境:Python 3.9;
2、“查询Excell”开发环境:.NET8;
3、软件支持题目重复;
4、若考核网页(软件)不支持题目复制,尝试使用浏览器插件解除复制或使用ocr软件辅助。