亲爱的各位小伙伴,你是否经历过这样的困境:
手里有一份杂乱的试题库,题目、选项、答案混在一起,想要整理成规范的表格格式,却要手动复制粘贴几百道题?
别急!今天我要分享一个超实用的Python脚本,让你5秒钟自动整理任意数量的选择题,从此告别手动整理的噩梦。
📋 这个脚本能做什么?
想象一下,你的原始数据是这样的:
运行脚本后,你会得到这样的Excel表格:
| | | | | |
|---|
| | | | D、境内居民个人通过境内银行与境内非居民个人之间发生的人民币收付款 | |
| 2.关于境内居民通过境内银行与境外非居民发生的收入和支付款项,下列哪项说法不正确的是( )。 | A、由境内居民分别按照其资金来源和资金用途性质进行申报 | B、境内银行应在基础信息中的"对方付款人/收款人名称"前添加"(JW)"字样 | C、"付款人/收款人常驻国家(地区) "填写境外非居民的常驻国家或地区 | | |
完全自动化,零手动操作!
🔧 核心功能拆解
1️⃣ 智能读取Excel
df = pd.read_excel('data.xlsx', header=None)
lines = df[0].dropna().astype(str).tolist()
2️⃣ 按题号自动切分
questions = re.split(r'\n(?=\d+\.)', text.strip())
3️⃣ 精准提取信息
4️⃣ 结构化输出
result_df.to_excel("整理后题库.xlsx", index=False)
💼 案例展示
这个脚本已成功处理过涉外收付款申报、财务管理、法律法规等多个领域的试题库。
处理前的混乱数据:
62.境内银行涉外收付款凭证包括哪些?
A、《涉外收入申报单》
B、《境外汇款申请书》
C、《对外付款/承兑通知书》
D、《境内收入申报单》
E、《境内汇款申请书》
F.《境内付款/承兑通知书》
答:ABC
87.一般情况下,对外付款/承兑通知书中的付款金额应满足以下哪几个平衡关系: ( )
A、付款金额=现汇金额+购汇金额+其他金额
B、付款金额≥现汇金额+购汇金额+其他金额
C、付款金额=第一行交易编码对应的金额+第二行交易编码对应的金额
D、付款金额=实际付款金额
E、《境内汇款申请书》
答:AC
处理后的规范表格:
| | | | | | | | |
|---|
| | | | | | | | |
| 一般情况下,对外付款/承兑通知书中的付款金额应满足以下哪几个平衡关系 | | | C、付款金额=第一行交易编码对应的金额+第二行交易编码对应的金额 | | | | |
看!再复杂的题目也能完美处理!
✨ 特别亮点:
💡 为什么要用这个脚本?
🚀 快速开始
第一步:准备数据
第二步:安装依赖
pip install pandas openpyxl
第三步:运行脚本
python script.py
第四步:获得结果
🎯 适用场景
✅ 教师整理试卷 ✅ 学生制作错题本 ✅ 培训机构管理题库 ✅ 在线教育平台数据处理 ✅ 考试复习资料整理 ✅ 企业员工培训题库 ✅ 资格证考试备考 ✅ 财务、法律等专业领域题库整理
💬 小贴士
🎁 全部实现代码
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)
这个脚本完全开源免费,你可以:
还在手动整理试题吗?赶快试试这个脚本吧!
如果你有任何问题或改进建议,欢迎在留言区告诉我。
源码获取或交流
需要本章或其他文章的源码和数据的同学,关注+三连,在对应文章下评论“6666“,加下面微信,发你!也可以拉你进群交流学习,加群备注:IT小本本学习
为了能随时获取最新动态,大家可以动动小手将公众号添加到“星标⭐”哦,点赞 + 关注,用时不迷路!!!!
关注公众号:IT小本本 👇