最近在帮朋友写书,由于需要,自学了个新技能,python操作docx,越学越觉得这个技能点很有用,推荐大家研究一下。
神技能
这个技能要求有python编程基础才看得懂我下面在说什么。大概思路是这样的:
导入必要的内容
1 | from docx import Document |
一些常用的变量及用法
1 | doc = Document('aa.docx') |
接下来就是各种遍历了,正则表达式可以用来做定位,以便检查一些比较明显的typo错误,比如,段落结尾没有句号、中文和英文之间没有空格、文件中有特定文本。。。。
通过定位需要修改的paragraph、run之类的元素,就可以进行修改了。
1 | if re.match('^Heading[0-9]{1,3}.*$',paragraph.text): |
中文字体设置比较麻烦,设置run的中文字体,两个地方:
1 | r._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体') |
另外就是设置 style
了。
style
可以看看这篇:https://www.cnblogs.com/anpengapple/p/8372991.html
文本替换,可以找到最小单位,然后用 run.text.replace
替换,这样可以保留原来的格式:
1 | def read_document(): |
说说怎么用
场景1:几百页的大文档
领导找了各种部门反复合稿、改稿,但是多数人是不懂排版技术的,领导觉得格式很乱,太难看了,让排个版,把常见问题都处理一下。
正常做法是设置一堆样式,然后匹配各种段落,就设置完成了。这个时候并不需要python,因为只搞一次。
然鹅,过一段时间,由于多个部门、领导反复迭代、改稿子,之前设置好的样式又变得得乱七八糟了,领导往往会喊你再排版一次,修改一下格式,这个时候,你就疯了,因为你要再过至少一遍全部的文档。
合稿里面会有各种错误,比如段落末尾没有句号、中文和英文中间有空格、中间连续多个空格、有一些不可见字符。。。。。
这个时候,就可以用python了。和代码审计sonar的逻辑一样,建立一个常见错误库,积累迭代几次,这个库就非常完美了。以后一键完成标准样式设置、一键修改常见错误、一键完成字体统一……真香!
场景2:几百个文档
几百个文档,格式内容都差不多,每个文档有些不一样。需要按照不同章节,增加不同的页眉页脚等复杂元素。或者按模板生成格式文档,根据表单替换关键字。
文档多了,自然用python。
场景3:关键词字典替换
文档大,一些特殊词汇需要替换掉,比如’脱敏‘。使用关键词清单,替换。一个一个换,效率低得不要不要,写程序!
场景4:size比较大的文档
文档大,因为里面放了太多的字了,使用图形界面进行批量操作的时候,经常卡死。这个时候,可以把鼠标选择、操作这个循环,替换成程序。每次都有步骤,这样不ng。
参考链接
- 官方文档:https://www.cnblogs.com/ontheway703/p/5266041.html
- https://www.cnblogs.com/anpengapple/p/8372991.html
- 使用python-docx做密码表加密解密的简单替换逻辑:https://gitee.com/zhanglongtumi/pythonDocx
- RPA手把手——python-docx 设置 word 文档中表格格式:https://zhuanlan.zhihu.com/p/88151371