一键整理试题库!用Python自动化处理Excel选择题

亲爱的各位小伙伴,你是否经历过这样的困境:

手里有一份杂乱的试题库,题目、选项、答案混在一起,想要整理成规范的表格格式,却要手动复制粘贴几百道题?

别急!今天我要分享一个超实用的Python脚本,让你5秒钟自动整理任意数量的选择题,从此告别手动整理的噩梦。


📋 这个脚本能做什么?

想象一下,你的原始数据是这样的:

运行脚本后,你会得到这样的Excel表格:

题目 选项A 选项B 选项C 选项D 答案
1.下列选项中哪项不属于间接申报的范围?( ) A、资本项目管理涉外收付款 B、货物贸易进出口核查涉外收付款 C、代发工资类涉外收付款 D、境内居民个人通过境内银行与境内非居民个人之间发生的人民币收付款 D
2.关于境内居民通过境内银行与境外非居民发生的收入和支付款项,下列哪项说法不正确的是( )。 A、由境内居民分别按照其资金来源和资金用途性质进行申报 B、境内银行应在基础信息中的"对方付款人/收款人名称"前添加"(JW)"字样 C、"付款人/收款人常驻国家(地区) "填写境外非居民的常驻国家或地区 C

完全自动化,零手动操作!


🔧 核心功能拆解

1️⃣ 智能读取Excel

python 复制代码
df = pd.read_excel('data.xlsx', header=None)
lines = df[0].dropna().astype(str).tolist()
  • 读取Excel第一列的所有数据
  • 自动清理空行,转换为列表

2️⃣ 按题号自动切分

python 复制代码
questions = re.split(r'\n(?=\d+\.)', text.strip())
  • 使用正则表达式识别题号(1. 2. 3.)
  • 自动将混乱的文本分割成独立的题目

3️⃣ 精准提取信息

  • 题目:第一行
  • 选项:识别 A、B、C... 开头的行
  • 答案:用正则表达式查找"答:"后的内容

4️⃣ 结构化输出

python 复制代码
result_df.to_excel("整理后题库.xlsx", index=False)
  • 生成规范的Excel表格
  • 每道题一行,每个字段一列

💼 案例展示

这个脚本已成功处理过涉外收付款申报财务管理法律法规等多个领域的试题库。

处理前的混乱数据:

复制代码
62.境内银行涉外收付款凭证包括哪些?
A、《涉外收入申报单》
B、《境外汇款申请书》
C、《对外付款/承兑通知书》
D、《境内收入申报单》
E、《境内汇款申请书》
F.《境内付款/承兑通知书》
答:ABC

87.一般情况下,对外付款/承兑通知书中的付款金额应满足以下哪几个平衡关系: (    )
A、付款金额=现汇金额+购汇金额+其他金额
B、付款金额≥现汇金额+购汇金额+其他金额
C、付款金额=第一行交易编码对应的金额+第二行交易编码对应的金额
D、付款金额=实际付款金额
E、《境内汇款申请书》
答:AC

处理后的规范表格:

题号 题目 选项A 选项B 选项C 选项D 选项E 选项F 答案
62 境内银行涉外收付款凭证包括哪些? A、《涉外收入申报单》 B、《境外汇款申请书》 C、《对外付款/承兑通知书》 D、《境内收入申报单》 E、《境内汇款申请书》 F、《境内付款/承兑通知书》 ABC
87 一般情况下,对外付款/承兑通知书中的付款金额应满足以下哪几个平衡关系 A、付款金额=现汇金额+购汇金额+其他金额 B、付款金额≥现汇金额+购汇金额+其他金额 C、付款金额=第一行交易编码对应的金额+第二行交易编码对应的金额 D、付款金额=实际付款金额 AC

看!再复杂的题目也能完美处理!

特别亮点:

  • ✅ 自动识别多选题(ABC、AC等多个答案)
  • ✅ 支持A-F六个选项,轻松处理复杂题型
  • ✅ 保留原始题号和完整题目信息
  • ✅ 处理速度快,4道题不到1秒钟

💡 为什么要用这个脚本?

对比项 手动整理 用脚本
100道题耗时 2-3小时 5秒钟
出错率 5-10% 0%
重复使用 每次都要做 一次编写,永久使用
心情 😫 😎

🚀 快速开始

第一步:准备数据

  • 将试题放在Excel的第一列
  • 保存为 data.xlsx

第二步:安装依赖

bash 复制代码
pip install pandas openpyxl

第三步:运行脚本

bash 复制代码
python script.py

第四步:获得结果

  • 自动生成 整理后题库.xlsx
  • 打开即用!

🎯 适用场景

✅ 教师整理试卷

✅ 学生制作错题本

✅ 培训机构管理题库

✅ 在线教育平台数据处理

✅ 考试复习资料整理

✅ 企业员工培训题库

✅ 资格证考试备考

✅ 财务、法律等专业领域题库整理


💬 小贴士

  1. 支持多种选项格式:A、 A. A. 都能识别
  2. 支持A-F六个选项:轻松处理多选题
  3. 答案识别灵活:支持"答:"和"答:"两种格式
  4. 自动去重:重复的题目也能正确处理
  5. 支持多行答案:ABC、ABCD等多选答案完美处理
  6. 保留原始信息:题号、题目、选项、答案一个不少

🎁 全部实现代码

python 复制代码
import pandas as pd
import re

# =========================
# 读取Excel
# =========================
df = pd.read_excel('data.xlsx', header=None)

# 第一列转列表
lines = df[0].dropna().astype(str).tolist()

# 合并成文本
text = "\n".join(lines)

# =========================
# 按题号切分
# =========================
questions = re.split(r'\n(?=\d+\.)', text.strip())

result = []

for q in questions:

    row = {
        "题目": "",
        "选项A": "",
        "选项B": "",
        "选项C": "",
        "选项D": "",
        "选项E": "",
        "选项F": "",
        "答案": ""
    }

    q_lines = q.strip().split("\n")

    # 题目
    row["题目"] = q_lines[0]

    # 答案
    answer_match = re.search(r'答[::]\s*([A-F]+)', q)
    if answer_match:
        row["答案"] = answer_match.group(1)

    # 选项
    for line in q_lines[1:]:

        line = line.strip()

        match = re.match(r'^([A-F])[、\..](.*)', line)

        if match:
            option = match.group(1)
            content = match.group(2).strip()

            row[f"选项{option}"] = f"{option}、{content}"

    result.append(row)

# =========================
# 输出结果
# =========================
result_df = pd.DataFrame(result)

# 保存Excel
result_df.to_excel("整理后题库.xlsx", index=False)

print(result_df)

这个脚本完全开源免费,你可以:

  • 直接使用
  • 根据需要修改
  • 分享给朋友
  • 用于商业项目

还在手动整理试题吗?赶快试试这个脚本吧!

如果你有任何问题或改进建议,欢迎在留言区告诉我。


相关推荐
jiayong239 小时前
02 创建虚拟环境
python
NiceCloud喜云9 小时前
Claude Code Routines 实战:三种触发器跑通云端自动化编码
android·运维·数据库·人工智能·自动化·json·飞书
旺仔来了9 小时前
不联网的Linux下部署python环境
linux·开发语言·python
小江的记录本10 小时前
【JVM虚拟机】垃圾回收GC:垃圾回收算法:标记-清除、标记-复制、标记-整理、分代收集(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·安全·面试
IP搭子来一个10 小时前
爬虫采集大量返回 403、429,到底卡在哪一环?
网络·爬虫·python
deepin_sir10 小时前
06 综合对比与实战选型——到底该用哪个?
python
小江的记录本10 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:G1:Region分区、Mixed GC、回收流程、适用场景(高频)(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·spring cloud·面试
智研数智工坊11 小时前
FastAPI+uv+Jinja2+Nuitka 通用Web桌面框架搭建教程|从零搭建可打包迭代的Python开发底座
python·fastapi·uv·nuitka·jinja2·桌面应用开发
Ulyanov11 小时前
用声明式语法重新定义Python桌面UI:QML+PySide6现代开发入门(一)
开发语言·python·算法·ui·系统仿真·雷达电子对抗仿真
❀搜不到12 小时前
Ubuntu查看指定Python程序的CPU、GPU、内存占用情况
linux·python·ubuntu