当前位置:首页>python>Word试卷转Excel表格不会弄?Python一招教你轻松搞定,解放双手不求人

Word试卷转Excel表格不会弄?Python一招教你轻松搞定,解放双手不求人

  • 2026-10-21 13:28:50
Word试卷转Excel表格不会弄?Python一招教你轻松搞定,解放双手不求人
作为熟悉职场业务的你,是否也曾遇到过Word试卷整理到Excel表格的问题?
Word文档存有一些业务练习题,其中选择题、判断题、答案和解析混在一起,需要录入到Excel表格里统计、归档。面对这一堆散乱的题目、选项、答案,还有解析,你是怎样输入到Excel表格里呢?
这是最近一位粉丝的提出的问题。这样的文件一共有27个之多。很显然,如此大量Word格式的习题,如果手动提取题目,选项和答案到Excel的话,工作效率极低,还会存在格式不统一、增加使用都的难度等问题。
今天,这个问题因这段Python代码而变得简单。下面这段代码能自动提取Word文档中的题型、题目、选项、答案和解析,一键生成整齐而规范的Excel表格。
from docx import Documentfrom collections import defaultdictfrom openpyxl import Workbookimport redoc_path = r"E:\配套习题.docx"xls_path = r"E:\配套习题.xlsx"xt_dict = defaultdict(lambda : defaultdict(dict))doc = Document(doc_path)tixing = ""tigan = ""for paragraph in doc.paragraphs:    text = paragraph.text    if "配套习题" in text:        continue    elif m_tx := re.search(r"^[一二三四五六七八九十]+\s*、\s*([一-龢]+)", text):        tixing = m_tx.group(1)        continue    elif m_tg := re.search(r"^\d+\s*\.\s*.+",text):        tigan = m_tg.group()        continue    elif m_xx := re.search(r"^([A-G])\s*\.\s*(.+)",text):        xuanxiang_1 = m_xx.group(1)        xuanxiang_2 = m_xx.group(2)        xt_dict[tixing][tigan][xuanxiang_1] = xuanxiang_2        continue    elif m_da := re.search(r"答案\s*[::]\s*(.+)",text):        daan = m_da.group(1)        xt_dict[tixing][tigan]["答案"] = daan        continue    elif m_jx := re.search(r"解析\s*[::]\s*.+",text):        jiexi = m_jx.group()        xt_dict[tixing][tigan]["解析"] = jiexi        continuewb = Workbook()ws = wb.activews.append(["题型","题目","选项A","选项B","选项C","选项D","选项E","答案","解析"])r = 2for tx,dic_tx in xt_dict.items():    for tg,dic_tg in dic_tx.items():        ws.cell(r,1).value = tx        ws.cell(r,2).value = tg        ws.cell(r,3).value = dic_tg.get("A","")        ws.cell(r,4).value = dic_tg.get("B","")        ws.cell(r,5).value = dic_tg.get("C","")        ws.cell(r,6).value = dic_tg.get("D","")        ws.cell(r,7).value = dic_tg.get("E","")        ws.cell(r,8).value = dic_tg.get("答案","")        ws.cell(r,9).value = dic_tg.get("解析","")        r += 1wb.save(xls_path)
先来看运行代码后的效果:
代码解析:
第1-4行:导入解决这个问题所需要的模块。docx模块用于处理.docx格式Word文档,openpyxl模块用来处理.xlsx格式的Excel文档,collections模块的defaultdict用来创建嵌套字典,re是使用正则表达式匹配文本。
第6-11行:初始化设置,包括路径、创建嵌套字典、读取文档等。xt_dict = defaultdict(lambda : defaultdict(dict))一句是使用自定义函数的方式创建嵌套字典,这种方法可以避免键不存在而报错,这是defaultdict的优势所在。
第13-35行:遍历Word文档中所有段落,按规则要求提取有用的信息并存入字典。
  • re.search(r"^[一二三四五六七八九十]+\s*、\s*([一-龢]+)", text):匹配题型。如:一、单项选择题,这里使用分组([一-龢]+)只提取题型名称,如:单项选择题。\s匹配空白字符,如空格、制表符,*表示0个或多个,+表示1个或多个,[一-龢]匹配常用汉字。
  • re.search(r"^\d+\s*\.\s*.+",text):匹配题目,如:1.为抓好……。\d表示0-9,^表示匹配开头,\.表示“.”。
  • re.search(r"^([A-G])\s*\.\s*(.+)",text):匹配选项,如:A.4个月。这里有两个分组,一个是字母,如:A,一个选项,如:4个月。[A-G]表示A-G之间任意一个字母。
  • re.search(r"答案\s*[::]\s*(.+)",text):匹配答案。[::]表示匹配“:”或“:”
  • re.search(r"解析\s*[::]\s*.+",text):匹配解析。
第37-54行:把字典写入Excel表格。 r=2表示从第2行开始写入。ws.cell(r,1).value=tx为第r行、第1列单元格赋值。
如果需要提取所有docx文档文档信息,可以使用pathlib模块的Path()函数来遍历文件夹下所有的docx文档即可实现批量转换。代码:
for docx in Path(文件夹路径).glob("*.docx"):
只需要简单几步,就能实现批量Word文档的一键自动化转换,快去试试吧!

最新文章

随机文章