应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

Word神器pythondocx

  前两天有个朋友向我求助,她在写毕业论文时,不小心将论文里的中文双引号替换为英文的了,各种原因导致无法回退,8万多字的论文,眼看就要交了,该怎么办?
  首先想到word自身的替换功能,倒是能查到,但是没法动态替换,即只替换两边引号,而不换中间内容;
  另外一种方案是,即用VBA,通过编程来替换,虽说做过几个项目,可好久不用,拾起费劲,再加上VBA中各种概念和用法,学习成本太高,放弃;
  还有一种方案,即用Python操作word,首先对Python更熟悉,另外一定有别人造好的轮子。果然,没用多久找到了pythondocxPython库,文档齐全,功能强大,用来解决替换问题不在话下。
  开始之前,先简单了解下pythondocxpythondocx介绍
  pythondocx是用于创建可修改微软Word的一个python库,提供全套的Word操作,是最常用的Word工具概念
  使用前,先了解几个概念:Document:是一个Word文档对象,不同于VBA中Worksheet的概念,Document是独立的,打开不同的Word文档,就会有不同的Document对象,相互之间没有影响Paragraph:是段落,一个Word文档由多个段落组成,当在文档中输入一个回车键,就会成为新的段落,输入shift回车,不会分段Run表示一个节段,每个段落由多个节段组成,一个段落中具有相同样式的连续文本,组成一个节段,所以一个段落对象有个Run列表
  例如有一个Word,内容是:
  则结构这样划分:
  第二个段落(paragraph),没有内容,所以节段(run)为空安装
  可以用pip来安装:pipinstallpythondocx
  命令行中运行下面语句,如果没有报错,则说明安装成功pythoncimportdocx小试牛刀
  pythondocx安装后,测试一下:fromdocximportDocumentdocumentDocument()paragraphdocument。addparagraph(Loremipsumdolorsitamet。)priorparagraphparagraph。insertparagraphbefore(Loremipsum)document。save(rD:est。docx)引入Document类定义一个新文档对象document想文档中插入一个段落(paragraph)再在这个段落(paragraph)前插入另一个段落最后调用文档对象document的save保存文档
  用Word打开保存的test。docx就可以看到:
  问题分析与解决
  了解了pythondocx的基本概念,开始着手解决问题,大体思路是:读取文档内容查找英文引号之间的内容将找到的内容的英文引号换成中文引号,并将内容替换回去完成处理后将文档另存查找目标
  首先要解决的是如何找到英文引号之间的内容?
  例如文档内容有这么一段:。。。对基于需求的教育资源配置系统观的研究,尤其是对以学习者为中心和从个性化学习、精准教学视角出发的教育资源配置问题提供了理论支持以及方向指导。。。
  对于英文引号来说不区分前引号和后引号,怎么能保证配置到的不会是和从、、以及以学习者为中心和从个性化学习、精准教学或者不会忽略两个引号出现在上下行的情况?
  重温正则表达式,终于得到如下表达式:(?:〔〕)?::为了取消圆括号模式配置过程的缓存,即不需要遇到一个符合的就结束匹配〔〕:表示匹配的内容不能是,以避免贪婪匹配,即避免匹配成从第一个开始一直到最后一个结束整体的意思是配置两个之间的内容,且内容中不包括
  后来整理过程中,还发现另一种写法:。?
  不过。不能匹配换行符,坚持要用,需要使用可选修饰符re。S:importrepatternre。compile(。?,re。S)re。findAll(pattern,text)text为待查找字符串引入正则表达式模块rere。S为可选标识修饰符,使。匹配包括换行在内的所有字符利用findAll查找所有匹配内容
  关于Python正在表达式的更多用法参考文后参考链接实现
  查找问题解决了,做替换就方便多了:fromdocximportDocumentimportredocDocument(rD:ahrefhttps:www。bs178。comlunwentargetblankclassinfotextkey论文a。docx)restr(?:〔〕)forpindoc。paragraphs:matchRetre。findall(restr,p。text)forrinmatchRet:p。textp。text。replace(r,r〔1:1〕)doc。save(rD:ahrefhttps:www。bs178。comlunwentargetblankclassinfotextkey论文a修正。docx)引入Document类,和正则表达式模块打开目标文档,字符串前的r表示取消字符串转义,即按原始字符产来解释循环文档的段落(paragraph),对每个段落,用正则表达式进行匹配循环对于匹配到的结果,将前后引号,换成中文引号,并替换段落(paragraph)的text;其中r〔1:1〕表示截取从第二个位置(第一个位置是0)到倒数第二个位置截取字符串,刚好去掉前后引号最后另存文档
  注意:pythondocx保存文档时不会给出任何提示,会瞬间完成,所以另存是个稳妥的做法
  完工,赶紧将替换好的文档发过去
  还没来得回味,她说:非常感谢!那个能不能再帮我生成个图表目录,这个必须要
  好吧,能者多劳(神器在手),干就完了强大的pythondocx
  在上面小试牛刀中,介绍了插入段落(paragraph)的用法,下面在介绍一些pythondocx的其他功能
  为了简洁,下面例子中省略了Document类的引入和实例化代码,document为Document的实例添加标题
  默认情况下添加的标题是最高一级的,即一级标题,通过参数level设定,范围是19,也有0级别,表示的是段落标题:添加一级标题document。addheading(我是一级标题)decument。addheading(我是二级标题,level2)decument。addheading(我是段落标题,level0)添加换页
  如果一个段落不满一页,需要分页时,可以插入一个分页符,直接调用会将分页符插入到最后一个段落之后:文档最后插入分页document。addpagebreak()特定段落分页fromdocx。enum。textimportWDBREAKparagraphdocument。addparagraph(独占一页)添加一个段落paragraph。runs〔1〕。addbreak(WDBREAK。PAGE)在段落的最后一个节段后添加分页表格操作
  Word文档中经常会用到表格,pythondocx如何添加和操作表格呢?添加一个22表格tabledocument。addtable(rows2,cols2)获取第一行第二列单元格celltable。cell(0,1)设置单元格文本cell。text我是单元格文字表格的行rowtable。rows〔1〕row。cells〔0〕。textFoobartoyou。row。cells〔1〕。textAndaheartyfoobartoyoutoosir!增加行rowtable。addrow()
  更复杂点的例子:表格数据items((7,1024,手机),(3,2042,笔记本),(1,1288,台式机),)添加一个表格tabledocument。addtable(1,3)设置表格标题headingcellstable。rows〔0〕。cellsheadingcells〔0〕。text数量headingcells〔1〕。text编码headingcells〔2〕。text描述将数据填入表格foriteminitems:cellstable。addrow()。cellscells〔0〕。textstr(item〔0〕)cells〔1〕。textitem〔1〕cells〔2〕。textitem〔2〕添加图片
  添加图片,即,为Word里菜单中插入图片插入的功能,插入图片为原始大小:document。addpicture(imagefilename。png)
  插入时设置图片大小:fromdocx。sharedimportCm设置图片的跨度为10厘米document。addpicture(imagefilename。png,widthCm(10))
  除了厘米,pythondocx还提供了英寸(Inches),如设置1英寸:Inches(1。0)样式
  样式可以针对整体文档(document)、段落(paragraph)、节段(run),月具体,样式优先级越高
  pythondocx样式功能配置多样,功能丰富,这里对段落样式和文字样式做简单介绍段落样式
  段落样式包括:对齐、列表样式、行间距、缩进、背景色等,可以在添加段落时设定,也可以在添加之后设置:添加一个段落,设置为无序列表样式document。addparagraph(我是个无序列表段落,styleListBullet)添加段落后,通过style属性设置样式paragraphdocument。addparagraph(我也是个无序列表段落)paragraph。styleListBullet文字样式
  在前面pythondocx文档结构图可以看到,段落中,不同样式的内容,被划分成多个节段(Run),文字样式是通过节段(Run)来设置的设置加粗斜体paragraphdocument。addparagraph(添加一个段落)设置节段文字为加粗runparagraph。addrun(添加一个节段)run。boldTrue设置节段文字为斜体runparagraph。addrun(我是斜体的)run。italicTrue设置字体
  设置字体稍微复杂些,例如设置一段文字为宋体:paragraphdocument。addparagraph(我的字体是宋体)runparagraph。runs〔0〕run。font。name宋体run。element。rPr。rFonts。set(qn(w:eastAsia),宋体)总结
  pythondocx是个功能强大的Word库,能实现几乎所有在Word中操作,今天通过一个实例,介绍了pythondocx的一些基本用法,限于篇幅,没法展开讨论更多内容,如果有兴趣可以深入研究,说不定可以让Word像Markdown一样简单。

一加11工程机配置曝光,搭载骁龙8Gen2随着高通骁龙下半年芯片发布会的临近,有关于各家厂商搭载骁龙8Gen2的新机的爆料越来越多,不少厂商也表示将在年末迅速跟进新芯片来带给消费者更多可选产品。今日,数码博主数码……奋斗成就未来生逢一个伟大的时代,亲眼见证无数变化与成就,是生活在当下这个时代的人们的幸运。最近一直在关注2022好评中国网络评论大赛,有几个关于奋斗的作品让我印象深刻。实现梦想的征途……web3域名web3域名是用户重要的Web3身份凭证,可使用域名访问全链应用。今年下半年,web3域名在NFT市场中表现亮眼。NFTGo数据显示,最近三个月ENS交易量为8919万美……5大山寨明星网红有的被明星本人肯定,有的禁止粉丝说他蹭热度模仿明星的5大网红,有的与正主连麦,有的模仿别人还不让说引言。网红我们文章中放出来的第一张图到底像哪个明星?就算你对娱乐圈不那么感兴趣说不定也能说出这个明星的名字肖……传世手游传奇世界新作!传世骑战版上线,灵兽合击称霸中州大家好,我是小白。一转眼一个月过去了,相信很多玩家已经迫不及待了。因为传世骑战版终于要出了!这次是真的,为了感谢各位的耐心等待,小白给大家准备了很多礼包!大家千万不要错过了!……海马歌舞厅29年,主角消失,配角都火了,差距一目了然这是一部堪称90年代神剧的作品,整部剧的创作团队有40多人,王朔、海岩等人领衔担任编剧,马未都、莫言担任策划;主演和客串集聚了当时大半个娱乐圈的明星。这部于1993年开播……原汁原味的游戏体验,北通阿修罗2PRO游戏手柄多模版开箱虽然现在手游很流行,但是要找回童年的游戏记忆,还得使用游戏手柄玩点刺激的游戏,比如《地平线5》。使用游戏手柄玩游戏,是我从小学到现在一直保持的习惯,这么多年过去了,游戏手柄厂商……随笔英年早逝的都是些什么人走在秋天的阳光里,暖暖的,秋天的色彩很美,给人踏实的感觉。生活真好,世界真好,活着真好。但是,最近却总见发布英年早逝的消息。四十多岁,五十多岁,正是人生最成熟的时候……放飞自我?辨识度拉满!魅族19被曝光近日,有网友曝光了一组魅族19系列的海报,整个就一放飞自我的设计。网友们都炸开了锅!网友a:有点好看啊网友b:有创意,总比某些厂商强行圆圆圆,强行矩形,圆环强多了吧……秋冬32种最火西装外套搭配公式,赶紧收藏吧秋冬穿搭除了厚厚的羽绒服和大衣外,西装外套也是不错的选择,复古又高级利落随性帅气,还很显气质。一件简单的西装外套能搭配出不用风格的穿搭,是女人平时ootd的小心机。但如果……刘维伟不讲情面,CBA26岁老将惨遭裁员,有望重回广东队辅佐刘维伟不讲情面,CBA26岁老将惨遭裁员,有望重回广东男篮。在这个夏天CBA联赛各支球队都发生了非常大的变化,其中青岛队当属之最。青岛队优先聘请了年轻主帅刘维伟接替了吴庆龙的位……加拿大小会计的一个普通早上有人说:有钱就可以任性。我不想谈钱,我只是说心情好就任性。上班路上,今天心情特好,就路边趴车,想想,班天天有,可这样的良辰美景好心情,那可不是天天都有的,我要任性,要爬山……
vivoXFold曝光联发科天玑9000配上18G大运存在全面屏手机设计大同小异的今天,手机厂商们开始在智能手机的新形态上发力,而折叠屏手机便是新形态下的产物。大家都知道,vivo手机是一个极具影响力并且研发实力非常强的手机厂商,v……红米k50系列先上一组配置图:1。红米k40s这款手机可以说是红米k40的升级款,后置主摄增加了光学防抖,快充也从33w升级到了67w,手机厚度也薄了一点,最重要的是8128g版……iPhone14渲染图100屏占比没有刘海屏,果粉还会怀念乔苹果全新配色的iPhone13系列已经正式开卖,但是这种仅仅是把机身外壳更换的设计并没有让消费者感到满意,而且iPhone14系列的相关信息也得到了曝光,所以苹果秋季新品发布会……删光淘宝京东拼多多,大二女生挑战不网购删光淘宝京东拼多多,大二女生挑战不网购长江日报记者张维纳网购真的省钱省时吗?半年前,20岁的小赵决定做一位时代少数派:不再做网购剁手族,把自己从非理性消费中拉出来。……玉兰花开,姑苏满树春景昨天是苏州园林恢复开放的第一天,我兴奋地起了个大早,去网师园赴一场与春日的约会。卡着七点半入园,自信满满地跟门卫大爷打招呼:这么早里面应该没啥人吧?大爷意味深长地看了我一……31岁水原希子大方承认新恋情!与男方朋友变恋人,目前未考虑结近日,据日本媒体报道,水原希子被拍到与一男子在寿司店约会后大方承认与男方的恋情,并称新男友是原本就认识的老朋友,他的职业是一名服装设计师,现在两人既是恋人关系也是合作伙伴,不过……小米Civi爆降300享免息,3月抄底好时机眼下,小米开启了月末优惠活动,全系产品均迎来了不少的优惠。接下来,大鲨鱼将为您推荐一款高性价比的小米手机。小米Civi优惠价格:满2000减300,到手价2299元……泡脚祛湿驱寒治百病?医生这5种人不推荐随着大家对养生的关注度越来越高,一种全民养生方式轰轰烈烈地传遍了大街小巷,从明星到普通人,都爱上了它:泡脚(jio)!某宝上搜一下泡脚桶,让人看得眼花缭乱:从平价到高端,……这些地方曾经风光无限,今日却沦为鬼城,令人唏嘘1。蒙大拿州班纳克班纳克以当地一个印第安民族命名。在1862年成立后,它作为蒙大拿州的金矿小镇经营了一百多年,后来中间荒废。2。加利福尼亚州勒德洛Ludlow于18……4种调料宝宝接触越晚越好,2岁之前尽量少吃,否则危害健康每一位宝妈对宝宝的吃都非常重视,从出生后的母乳、奶粉、辅食到宝宝开始吃饭,宝妈总担心吃不好影响发育。从接触饭菜开始,大部分家庭都会专门做宝宝餐,毕竟孩子的消化能力和咀嚼能力与成……必备推荐!Github上最值得收藏的12个机器学习教程这两年机器学习风头正劲,有许多小伙伴会问:学习机器学习有什么好的工具吗?我想说,要学习任何编程相关的东西,最好的老师必然就是在github了。没有哪里会比githu……周琦又犯老毛病,因为管不住嘴或被NBL抛弃!欲回辽篮的梦破碎大家好欢迎收看本期的水晶看体育,北京时间2月26日,澳大利亚NBL联赛迎来第13轮的较量,周琦所在的凤凰队以86比80成功复仇珀斯夜猫队迎来了两连胜,不过周琦全场比赛依旧延续了……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网