Python中怎么将Word文档转换为Excel表格
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,Python中怎么将Word文档转换为Excel表格,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。测试word文档读取先测试一个wo
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
数据库中提取的秒数不对
在哪修改安全接入服务器
服务器租用哪里好
做中国地图的软件开发
数据库提取字段
达梦数据库更改密码记录
查看数据库中的函数
空格存入数据库
虚拟机数据库管理
软件开发合同需要交印花税
前端软件开发工程师简历
丽升服务器设置如何输入
数据库 iif函数
软件开发培训
数据库增加数据文件
网络安全与防范技术
吉安服务器哪里比较好
客户端共享服务器应用软件的方法
服务器双网口做级联
软件开发版本过程管理
oracle数据库技术强项
企优托网络技术有限公
华为服务器配置参数
游戏辅助软件开发用语言
抖音软件开发有多少人
惠州塔式服务器推荐商家
服务器测试脚本使用什么语言写的
易语言可以连接本机数据库吗
服务器双网口做级联
越南网络安全立法