安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

python自动化办公docx模块操作Word文档的简单案列

10月10日 眸中星投稿
  前言
  前段时间有小伙伴问二狗,怎么把一个Word文档的题库,写一个python脚本提取到Excel里。由于数据全是选择题,且文本很有规律,不是很复杂。所以今天二狗就通过本篇文章来分享下二狗的思路和代码。
  word文档数据
  提取为Excel的格式编程环境
  1。文中电脑操作系统:win10
  2。文中所使用的python模块:
  (1)。os(python自带模块,不需要pip安装)
  (2)。re(python自带模块,不需要pip安装)
  (3)。docx(第三方模块,需要pip安装)
  安装命令:pipinstallihttps:
  pypi。tuna。tsinghua。edu。cnsimplepythondocx
  注意:我们这次要用到的第三方库,就是专门为docx格式的word文档而生的。如果你手头需要处理的是doc格式的word文档,你可以打开word,将其另存为docx的格式。【注意word97以上版本支持存储docx文件】
  (4)。openpyxl(第三方模块,需要pip安装)
  安装命令:pipinstallihttps:
  pypi。tuna。tsinghua。edu。cnsimpleopenpyxl
  3。文中数据源文件:选择题。docx(如果需要,请后台私信)
  4。文中所使用的IDE:VSCODE(安装Jupyter插件)文档数据结构剖析及代码思路
  文档结构
  (1)提取答案:由于答案是红色标记的,我们可以读取每一段落的样式,红色的段落就是答案。
  分题
  (2)分题:这个稍微有点复杂,二狗通过处理每一题前面的题号,来进行的,具体详见代码。
  一行2选项
  (3)一行2选项:通过split来分割,具体详见代码。代码拆检importosimportreimportdocximportopenpyxlnowpathos。getcwd()获取当前ipynb文件的路径docfile选择题。docx要提取的doc文件名excelfile选择题。xlsx保存为Excel的文件名wbopenpyxl。Workbook()实例化Excel对象wswb。active创建Excel活动表格tabhead〔序号,题目,选项1,选项2,选项3,选项4,答案〕定义Excel表头ws。append(tabhead)表头写入ExcelstartflagTrue设置开始状态contentlist〔〕初始化内容列表defjionpath(filepath,filename):功能:拼接文件路径:paramfilepath:固定参数,定义拼接的文件路径:paramfilename:固定参数,定义拼接的文件名称:return:返回拼接好的文件路径returnos。path。join(filepath,filename)
  这里二狗定义了一个无聊的函数docdocx。Document(jionpath(filepathnowpath,filenamedocfile))。paragraphs读取word文档。doc文件如是。docx文件需把文件另存为。doc文件
  读取docx文档,得到一个段落列表。
  段落列表forcontentinfilter(lambdax:bool(x。text),doc〔1:〕):遍历段落列表rowcontent。text。strip(试题)去除每一题的试题2字rowlistre。split(rdW,row)正则切割段落文本
  doc〔1:〕从第二行开始读取,不读取第一行的大标题
  filter(lambdax:bool(x。text),doc〔1:〕)这里是过滤为空值的段落。
  过滤效果
  没有过滤的效果可以看见明显空值
  strip和正则切割后的效果ifrowlist〔1:〕:判断切割后的列表的第一个元素,是否有值Ture为题目False为答案选项ifstartflag:判断是否为第一行contentlistrowlist〔1:〕如果是第一行就题目添加进空列表contentliststartflagFalse重制startflag为Falseelse:如果不是第一行contentlistanswer把answer答案列表添加进contentlistcontentlist。insert(0,number)contentlist列表里第一个位置插入序号ws。append(contentlist)把contentlist列表写入Excel里number1更新下一题的序号contentlist〔〕重置contentlist列表为空,准备添加下一题contentlistrowlist〔1:〕把题目添加进空列表contentlistelse:这里利用python的切片机制rowlist里只有一个元素时rowlist〔1:〕切片会返回rowlist〔i。strip()foriinre。split(rs{4},rowlist〔0〕)ifi〕处理一行2答案选项的情况contentlistrowlist把ABCD选项文本添加进contentlist
  超过列表长度的切片方法会返回空列表
  处理一行2个答案选项的效果
  ifrowlist〔1:〕超过列表长度的切片方法会返回空列表不会抛出异常forrunincontent。runs:遍历每个段落的文本样式找的为红色的答案answercolorstr(run。font。color。rgb)获取每个段落的字体颜色ifanswercolorFF0000:判断此段落的文字是否为红色answerre。findall(r〔AD〕{1},run。text)提取答案项对应的字母break停止遍历每个段落的文本样式
  找到答案项
  此处的break只打破forrunincontent。runs的循环else:forcontentinfilter(lambdax:bool(x。text),doc〔1:〕)循环结束时contentlistanswer把answer答案列表添加进contentlistcontentlist。insert(0,number)contentlist列表里第一个位置插入序号ws。append(contentlist)最后一题写入EXcel里wb。save(jionpath(nowpath,excelfile))保存文件
  因为二狗写的脚本,是通过处理下一题时来保存的上一题,所以最后一题的保存是要单独处理一下。完整代码importosimportreimportdocximportopenpyxlnowpathos。getcwd()获取当前ipynb文件的路径docfile选择题。docx要提取的doc文件名excelfile选择题。xlsx保存为Excel的文件名wbopenpyxl。Workbook()实例化Excel对象wswb。active创建Excel活动表格tabhead〔序号,题目,选项1,选项2,选项3,选项4,答案〕定义Excel表头ws。append(tabhead)表头写入ExcelstartflagTrue设置开始状态contentlist〔〕初始化内容列表defjionpath(filepath,filename):功能:拼接文件路径:paramfilepath:固定参数,定义拼接的文件路径:paramfilename:固定参数,定义拼接的文件名称:return:返回拼接好的文件路径returnos。path。join(filepath,filename)docdocx。Document(jionpath(filepathnowpath,filenamedocfile))。paragraphs读取word文档。doc文件如是。docx文件需把文件另存为。doc文件number1初始化序号forcontentinfilter(lambdax:bool(x。text),doc〔1:〕):遍历段落列表rowcontent。text。strip(试题)去除每一题的试题2字rowlistre。split(rdW,row)正则切割段落文本ifrowlist〔1:〕:判断切割后的列表的第一个元素,是否有值Ture为题目False为答案选项ifstartflag:判断是否为第一行contentlistrowlist〔1:〕如果是第一行就题目添加进空列表contentliststartflagFalse重制startflag为Falseelse:如果不是第一行contentlistanswer把answer答案列表添加进contentlistcontentlist。insert(0,number)contentlist列表里第一个位置插入序号ws。append(contentlist)把contentlist列表写入Excel里number1更新下一题的序号contentlist〔〕重置contentlist列表为空,准备添加下一题contentlistrowlist〔1:〕把题目添加进空列表contentlistelse:这里利用python的切片机制rowlist里只有一个元素时rowlist〔1:〕切片会返回rowlist〔i。strip()foriinre。split(rs{4},rowlist〔0〕)ifi〕处理一行2答案选项的情况contentlistrowlist把ABCD选项文本添加进contentlistforrunincontent。runs:遍历每个段落的文本样式找的为红色的答案answercolorstr(run。font。color。rgb)获取每个段落的字体颜色ifanswercolorFF0000:判断此段落的文字是否为红色answerre。findall(r〔AD〕{1},run。text)提取答案项对应的字母break停止遍历每个段落的文本样式else:forcontentinfilter(lambdax:bool(x。text),doc〔1:〕)循环结束时contentlistanswer把answer答案列表添加进contentlistcontentlist。insert(0,number)contentlist列表里第一个位置插入序号ws。append(contentlist)最后一题写入EXcel里wb。save(jionpath(nowpath,excelfile))保存文件结语
  以上汇报完毕,下篇文章再见。(如需文中数据资料请后台私信)
投诉 评论 转载

2年1500万!塔克拿终老合同,拒火箭2000万报价离开,荣热火在今年东部决赛里3比4惜败凯尔特人,塔克18场季后赛7。9分5。9篮板,三分球命中率达到45。1,塔克出色的表现也得到了热火球迷的尊重。去年夏天自由球员塔克加盟热火签……俗语子不言父之过,女不道母奸是什么意思?有什么道理吗?不管是在过去还是现在,也不管是在城市还是农村,教育孩子,让孩子健康成长是世界一大难题,大家也知道我国是一个历史悠久的古国,是一个礼仪之邦。在古代的时候老百姓文化程度不高,……为数字经济发展筑基中兴通讯亮相中国云网智联大会近日,2022年中国云网智联大会(原中国SDNNFVAI大会)在北京盛大召开,中兴通讯多位技术专家到场参会并发表主题演讲,与国内外行业技术专家,共同探讨基于云网融合、SDWAN……降温了,给孩子安排六款热气腾腾的砂锅炖菜,孩子爱吃补锌又补钙大家好这里是香姐说美食,最近的天气越来越冷了,很多家长已经开始给孩子贴秋膘了,为即将到来的寒冬做准备。今天推荐六款热气腾腾的砂锅炖菜,制作简单好吃下饭,孩子爱吃补锌又补钙,寒冷……老师,我捡到一块橡皮不知不觉,已年过半百,常常,眼前心中,会浮现出老家的样子,儿时的往事。我的老家,在陕西关中农村,那里,留下我快乐的童年时光,太多美好的回忆。那时,虽经济匮乏,缺吃少……python自动化办公docx模块操作Word文档的简单案列前言前段时间有小伙伴问二狗,怎么把一个Word文档的题库,写一个python脚本提取到Excel里。由于数据全是选择题,且文本很有规律,不是很复杂。所以今天二狗就通过本篇……FF大股东除名执行董事长Sue创始人贾跃亭能否带公司重归正轨FaradayFuture(FF,FFIE)大股东FFTopHoldingLLC(FFTop)针对FFIE董事会重组展开的行动再度升级。美国洛杉矶当地时间9月8日,FFT……B费朗尼克的确带来了新的思潮,他尽力了只是不适合曼联吧TheAthleticUK通讯记者AdamCrafton独家专访了曼联中场布鲁诺费尔南德斯,专访的标题是BrunoFernandesexclusive:ManchesterUn……四川37座城市,市区城区建成区发展排名情况四川省一共列出来37座城市分别是成都市、简阳市、都江堰市、彭州市、邛崃市、崇州市、自贡市、攀枝花市、泸州市、德阳市、广汉市、什邡市、绵竹市、绵阳市、江油市、广元市、遂宁市、射洪……辽宁冲冠迎利好!季后赛政策大调整广东优势全无姚明这次很公平CBA联赛还有三天时间即将迎来第三阶段的争夺,第三阶段的比赛将在两个赛区全面展开,沈阳和佛山将各自承担50场比赛。而季后赛在政策安排上也有了很大的调整,根据《体坛周报》记者廖化……张继科情史,情别刘诗雯,情散景甜,情惹张蕊,他在等待什么?张继科01最近,有狗仔爆料,景甜和张继科分手的原因,是他以买婚房为由,向景甜借钱,疑似用来偿还海外赌债。今日头条公子误这事不知真假,不好判断。张继……出租爱奇艺会员账号法院认定构成不正当竞争判决平台赔偿200万21世纪经济报道见习记者王巍北京报道在运营平台上提供爱奇艺会员账号出租服务,安徽省刀锋网络科技公司(下称刀锋公司)被北京爱奇艺科技有限公司(下称爱奇艺)诉至法院。日前,北……
如此高收益,利润从何而来?变老的路上,一定要变好马蜂窝元旦玩乐大数据主题跨年受热捧,上海迪士尼热度上涨125鸡犬之声相闻,老死不相往来的日子真好!国乒刚换领导就遇到麻烦事!张本智和不服樊振东,王皓能搞得定吗台北一特斯拉不明原因失控暴冲,为何特斯拉刹车失控事件频发?下赛季薪金前二十的巨星11人留队可夺冠,9人需要换队才能夺冠发售至今跌至2000档位,鸿蒙OS麒麟芯片5G,华为旗舰总算好天气出去游玩吧广西冬季夜间文化和旅游消费活动来了!南宁有这些安排一周旅行指南北京王府井文华东方打造七道式寻味旅程,万豪旅享家医疗医药板块能不能上车?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利