Python中怎么将Word文档转换为Excel表格
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,Python中怎么将Word文档转换为Excel表格,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。测试word文档读取先测试一个wo
千家信息网最后更新 2026年11月03日Python中怎么将Word文档转换为Excel表格
Python中怎么将Word文档转换为Excel表格,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
测试word文档读取
先测试一个word文档前1页的数据读取:
from docx import Documentdoc = Document("编号02 质检员高级技师(一级)理论试卷.docx")for i, paragraph in enumerate(doc.paragraphs[:55]): print(i, paragraph.text)匹配题型、题目和具体的选项
现在我们需要做的是就是匹配题型、题目和具体的选项,观察可以发现规律:
题型以大写数字开头
题目以普通数字+.开头
选项以括号+字母开头
❝
额外需要注意的:
开头几行文本也存在普通数字+.开头的,需要直接排除。
第7题的题目,和第19题的选项存在一些特殊的空白字符需要排除,
括号和小数点都同时存在半角和全角两种情况。
❞
对于需要注意的第二点:

查看一下这2处的空白字符:
doc.paragraphs[21].text
'7.(\xa0\xa0)是第一家实施六西格玛管理的公司。\xa0'
doc.paragraphs[49].text
'(A)参数设计 (B)常量设计\u3000 (C)变量设计\u3000\u3000 (D)系统设计'
发现分别是\xa0和\u3000。
整理好大致思路,我组织一下处理代码:
import refrom docx import Documentdoc = Document("编号02 质检员高级技师(一级)理论试卷.docx")black_char = re.compile("[\s\u3000\xa0]+")chinese_nums_rule = re.compile("[一二三四]、(.+?)\(")title_rule = re.compile("\d+.")option_rule = re.compile("\([ABCDEF]\)")option_rule_search = re.compile("\([ABCDEF]\)[^(]+")# 从word文档的"一、单项选择题"开始遍历数据for paragraph in doc.paragraphs[5:25]: # 去除空白字符,将全角字符转半角字符,并给括号之间调整为中间二个空格 line = black_char.sub("", paragraph.text).replace( "(", "(").replace(")", ")").replace(".", ".").replace("()", "( )") # 对于空白行就直接跳过 ifnot line: continue if title_rule.match(line): print("题目", line) elif option_rule.match(line): print("选项", option_rule_search.findall(line)) else: chinese_nums_match = chinese_nums_rule.match(line) if chinese_nums_match: print("题型", chinese_nums_match.group(1))保存匹配到的数据到结构化字典
现在我打算将当前匹配出来的文本数据存储成字典形式的结构化数据,字典结构的设计如下:
根据上述设计完善代码:
import refrom docx import Documentfrom collections import OrderedDictdoc = Document("编号02 质检员高级技师(一级)理论试卷.docx")black_char = re.compile("[\s\u3000\xa0]+")chinese_nums_rule = re.compile("[一二三四]、(.+?)\(")title_rule = re.compile("\d+.")option_rule = re.compile("\([ABCDEF]\)")option_rule_search = re.compile("\([ABCDEF]\)[^(]+")# 保存最终的结构化数据question_type2data = OrderedDict()# 从word文档的"一、单项选择题"开始遍历数据for paragraph in doc.paragraphs[5:]: # 去除空白字符,将全角字符转半角字符,并给括号之间调整为中间一个空格 line = black_char.sub("", paragraph.text).replace( "(", "(").replace(")", ")").replace(".", ".").replace("()", "( )") # 对于空白行就直接跳过 ifnot line: continue if title_rule.match(line): options = title2options.setdefault(line, []) elif option_rule.match(line): options.extend(option_rule_search.findall(line)) else: chinese_nums_match = chinese_nums_rule.match(line) if chinese_nums_match: question_type = chinese_nums_match.group(1) title2options = question_type2data.setdefault(question_type, OrderedDict())遍历结构化字典并存储
然后我们遍历结构化字典,将数据保存到pandas对象中:
import pandas as pdresult = []max_options_len = 0for question_type, title2options in question_type2data.items(): for title, options in title2options.items(): result.append([question_type, title, *options]) options_len = len(options) if options_len > max_options_len: max_options_len = options_lendf = pd.DataFrame(result, columns=[ "题型", "题目"]+[f"选项{i}"for i in range(1, max_options_len+1)])# 题型可以简化下,去掉选择两个字df['题型'] = df['题型'].str.replace("选择", "")df.head()结果:
最终保存结果:
df.to_excel("result.xlsx", index=False)完整代码
最终完整代码:
import pandas as pdimport refrom docx import Documentfrom collections import OrderedDictdoc = Document("编号02 质检员高级技师(一级)理论试卷.docx")black_char = re.compile("[\s\u3000\xa0]+")chinese_nums_rule = re.compile("[一二三四]、(.+?)\(")title_rule = re.compile("\d+.")option_rule = re.compile("\([ABCDEF]\)")option_rule_search = re.compile("\([ABCDEF]\)[^(]+")# 保存最终的结构化数据question_type2data = OrderedDict()# 从word文档的"一、单项选择题"开始遍历数据for paragraph in doc.paragraphs[5:]: # 去除空白字符,将全角字符转半角字符,并给括号之间调整为中间一个空格 line = black_char.sub("", paragraph.text).replace( "(", "(").replace(")", ")").replace(".", ".").replace("()", "( )") # 对于空白行就直接跳过 ifnot line: continue if title_rule.match(line): options = title2options.setdefault(line, []) elif option_rule.match(line): options.extend(option_rule_search.findall(line)) else: chinese_nums_match = chinese_nums_rule.match(line) if chinese_nums_match: question_type = chinese_nums_match.group(1) title2options = question_type2data.setdefault( question_type, OrderedDict())result = []max_options_len = 0for question_type, title2options in question_type2data.items(): for title, options in title2options.items(): result.append([question_type, title, *options]) options_len = len(options) if options_len > max_options_len: max_options_len = options_lendf = pd.DataFrame(result, columns=[ "题型", "题目"]+[f"选项{i}"for i in range(1, max_options_len+1)])# 题型可以简化下,去掉选择两个字df['题型'] = df['题型'].str.replace("选择", "")df.to_excel("result.xlsx", index=False)最终得到的文件:
关于Python中怎么将Word文档转换为Excel表格问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
题型
字符
数据
空白
文档
结构
题目
选择
结构化
设计
字典
开头
括号
高级
代码
半角
技师
理论
试卷
质检员
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网与科技
科技股互联网
科技互联网政务服务
互联网科技公司税收优惠
科技互联网技术
互联网科技公司怎么样
以房互联网科技
互联网高科技企业
互联网科技宣传片
海南购全球互联网科技
新华互联网科技2019
欧洲十大科技互联网公司
互联网科技有哪些公司
互联网与医疗科技
翼展科技 首家互联网医院
互联网科技和法律行业
2021世界互联网领先科技成果发布
互联网科技企业商标注意事项
西安左小互联网科技有限公司
平安好医生打造互联网科技医疗
互联网科技工作委员会
互联网与科技发展
奇士达互联网科技
互联网 视角下的科技创新
上海宁丞科技互联网
世界互联网科技公司市值排名
苏州五指互联网络科技有限
迪庆互联网科技招生
内蒙古九一互联网科技
互联网科技公司营业执照怎么办理