专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

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

  前言
  前段时间有小伙伴问二狗,怎么把一个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))保存文件结语
  以上汇报完毕,下篇文章再见。(如需文中数据资料请后台私信)

克拉拉才是人间尤物,穿紧身红裙秀过山车身材,羡煞旁人头条创作挑战赛服装的颜色,是最容易表现风格气质的。当我们看到一个人的时候,也许记不清她的容貌特征,也记不住她的性格喜好。但一定能记住她穿了什么颜色的衣服,所以选择服装颜色更加重要。身材决定寿命?研究表明脖子粗肚子大的人,或与长寿无缘?能吃是福这句老话,大家应该都听过,因为在物质条件不好的年代,能吃得好,吃得饱就是有福气的象征。但这个话放到现在饮食生活中却并不适用,吃得越多越好,身体出现疾病的风险可能就越大,而且飞机上还有一些帮助服务,你不开口空姐不会帮你如今交通工具越来越发达便捷,比如过去坐飞机只有有钱人才能坐得起,但是现在的机票都很便宜,尤其航空公司还会推出特价机票,而且人们的收入也提高了很多,所以现在选择坐飞机出行的人越来越多春节假期三国赤壁古战场迎来开门红春节假日,赤壁市旅游市场迅速复苏。三国赤壁古战场景区成为了很多游客的新春旅游热门打卡地。1月29日(正月初八),记者来到三国赤壁古战场景区,只见景区门口人潮涌动,游客正有序进入景区走进临朐县隐士村柿子红,腰包鼓中国青年网潍坊12月25日电(通讯员鞠欣洁)寒假,曲阜师范大学地理与旅游学院星光不负守田人社会实践队以耕地林果化为主题在山东青岛烟台潍坊等部分地区展开相关实践活动,2022年12月热带地区并非宜居之地,而是中国这些地方太热的地方并不好!热带地区如东南亚非洲等,那里生活的人们普遍寿命更短皮肤更黑个子更矮小甚至这些地方的传染病也会更多!这是因为,在气温较高的环境,不但细菌病毒容易滋生,而且人体新陈代女人买一双贵的鞋好,还是买一堆便宜的好?看完你就明白了鞋型的搭配其实在对于整体的气质和美感的凸显上还是很明显的,所以在对于不少的女性来说,鞋子的搭配到底是买一双贵的更好,还是要买一堆便宜的呢?这就是要质感还是要时尚和所谓的流行了。今天昆明漫步,在春城邂逅最具烟火气的四方食事在地冬日里的春城昆明,春意早已爬上枝头,桃花迎春和玉兰都已经竞相绽放。和北京在相同的时空里,阳光却给予这个城市不同的爬升轨迹,让暖意一直驻足,日常生活也就变得怡然自得。这也就不难理解,华为P60系列MateX3外观全升级,规格细节纷纷亮相2021年7月,华为发布了P50系列旗舰。如今距离这一代手机的发布已经过去了一年多的时间,华为官网也为其带来了降价促销活动。目前,官网购买华为P50限时直降730元华为P50Pro掌握了曾国藩的交友之道,这个孩子注定会成为人生赢家在社会生活中,我们每个人都不是一座孤岛,一定会面对各种各样的人际关系。戴尔。卡耐基说一个人的成功30靠才能,70靠人际关系。我们的孩子还比较单纯,心智还不成熟,还不太懂得可以和哪些日本自由行第11天从大阪到广岛,看到2座中国军人墓从大阪到广岛,这段行程走得有些压抑。在甲午战争中,有千余位中国军人被俘后送到日本,其中26人客死他乡。在大阪和广岛,我看到了其中10人的墓碑。有人质疑昨天游记中的最后一段内容日本能
在日本人眼中,中国颜值最高的9大美女,日本人审美有多高?文顾远山编辑顾远山非洲部落把体重达300斤的胖子,奉为梦寐以求的恋爱对象。中国人把前凸后翘腰细腿长的女星奉为女神。那日本人的审美又是怎样的?他们眼中的中国美女又会是谁?日本发起了一走遍五大洲,最美有郴州郴州,别称福城,位于湖南省东南部,自古便有北瞻衡岳之秀,南峙五岭之冲之称,既是兵家必争之地,又是人文毓秀之所。化身女将女侠,湖南省郴州市文旅广体局郴州市妇联携郴州各县市区文旅局长妇长三角金融一体化发展为国家建设带来了怎样的机遇?金融作为现代经济社会的重要驱动力,在长三角一体化的建设过程中占据主要地位,具有引领与带动作用。金融一体化是由于国家或地区间的金融资源存在禀赋差异,金融市场参与者利用金融要素,借助金硅谷银行爆雷,今夜有多少人注定无眠?1,硅谷银行破产,应该是一次针对华人企业和富人的定点精准狙击,人家大部分美国人已经取款完,据说王兴晒美团存款截图,就是硅谷银行的,还有潘石逸的的大部分财产也存在那,很多硅谷华人科技冬奥场馆鸟巢上海中心大厦这套绘本揭秘建筑奇迹的诞生日前,北京科学技术出版社旗下童书品牌100层童书馆出品了奇迹的诞生超级建筑科学绘本(全5册)。作为第一套以绘本形式再现中国新地标建筑的科普作品,这套绘本将前沿科技城市文化和时代精神大满贯赛国乒首日11战全胜,陈梦击败日本新星,男单产生大冷门3月11日,WTT新加坡大满贯女单首轮上演中日对决,排名世界第二的陈梦迎来首秀,击败日本新星长崎美柚,晋级女单32强。作为大满贯女单卫冕冠军,陈梦想要蝉联冠军的难度很大。身为东京奥蔡天凤案的最新进展,蔡母背后有高人指点一,第六位男嫌疑人被保释蔡天一案发生后,龙尾村的村民受到很大的震惊。搞到附近的邻居人心惶惶,有的人甚至睡不着觉,要去看医生。3月10日,早上10点左右,有部分村民在村长的带领下,来公募基金高质量发展十大关键词1998年3月5日,中国第一家公募基金国泰基金成立,当年又有四家基金公司相继成立。这一年,两只封闭式基金基金金泰和基金开元通过交易所系统上网发行,拉开了中国基金市场的大幕。回顾行业试点恢复出境团队游满月跨国航线增加旅行产品更丰富图虫创意供图彭春霞制图证券时报记者吴志2月6日起,文化和旅游部试点恢复全国旅行社及在线旅游企业经营中国公民赴有关国家出境团队旅游和机票酒店业务,至今已有月余。早在2月6日出境游重启李铁绝食不交代!足协大鱼浮出水面,曾赶走米卢,涉2亿赞助李铁真的是中国足球的大功臣,球员时期曾经追随中国男足打入世界杯,虽然在2002年韩日世界杯上面遭遇惨败,但是时至今日回看中国男足在世界杯上面的成绩,不得不说韩日世界杯依然是最高光的关键的10!35岁的迪马利亚持续爆发,尤文有望挺进欧联杯8强北京时间3月10日0400,欧联杯18决赛首回合,尤文图斯主场对阵弗赖堡。35岁的迪马利亚头球制胜,双方各有一个进球被判无效,最终尤文10击败弗莱堡,占得晋级先机。加盟尤文以来,3
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网