导语

领导给了一个任务:已知每天公司会发一个“每日要情”doc文件,求一年每日要情中所有数字化转型相关内容的汇编。

开发工具

python版本:3.8.8

相关模块:

os

docx

win32com

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。


代码全解

解这种办公自动化的题,最简单易懂的思路就是用python全程模拟人的全套动作。那么人肉暴力解这道题是怎么解?首先要人肉将所有word文档粘贴在一起,再Ctrl+F查找数字化转型相关的关键词,把搜到的内容整理到另外一个word里。目测两天两夜弄不完,即使弄得完,也会被机械劳动恶心死。

那么整个项目就被分解为三大动作:合并word,检索word,输出word。

1. 合并word

虽然处理word和excel有很多库,比如处理excel的xlrd、xlwt、xlutils、xlwings、openpyxl、xlsxwriter,处理word的python-docx、docx2txt、textract、antiword。

但是他们都不如win32com这个神器好用。它能支持office所有的com接口。这个接口的使用说明在微软的官网也可以查询到。有了这么完备的接口,我们就能在office的功能中“为所欲为”。其他的库,更加轻量,但是如果要用到更复杂的功能的时候,可能就比较捉襟见肘。

更要命的是没有支持doc文件的库,大部分只支持docx文件。

那么如何用win32com合并doc文件并生成docx文件,就成了本项目最关键的一步。

import os
import win32com.client as win32word = win32.gencache.EnsureDispatch('Word.Application')#启动word对象应用
word.Visible = False#获取文件夹中的所有doc文件的文件名
path = r'D:\pythonProject\meiriyaoqing\2021年每日要情'
files = []
for filename in os.listdir(path):filename = os.path.join(path,filename)files.append(filename)#新建合并后的文档
output = word.Documents.Add()#拼接文档
for file in files:output.Application.Selection.InsertFile(file)#获取合并后文档的内容
doc = output.Range(output.Content.Start, output.Content.End)#保存docx文档
output.SaveAs('D://pythonProject//meiriyaoqing//result.docx')
output.Close()

差不多等个10多分钟,800多页,88万字的报告就合并完成了。

所有doc内容被合并到了result.docx里。

2. 检索word

首先读取result.docx的内容看看一共有多少个段落。

import docx
from docx import Documentdoc = Document("result.docx")
print("段落数:"+str(len(doc.paragraphs)))
print(len(doc.paragraphs))

把所有段落存放在一个名为text的列表中。

#段落内容存入列表
text=[]
for i in range(len(doc.paragraphs)):text.append(doc.paragraphs[i].text)print("第"+str(i)+"段的内容是:"+doc.paragraphs[i].text)
print(text)

按内容来划分这些段落,将有数字化转型及其相关词的段落全部取出,放在第一部分。

#按内容分类result=docx.Document()paragraph1 = result.add_paragraph("\n数字化转型相关内容:\n")for i in text:flag=0if '数字化转型' in i:print(i)result.add_paragraph(i, style='List Number')flag=1if '5G' in i:if flag ==0:result.add_paragraph(i, style='List Number')flag=1if 'RPA' in i:if flag ==0:result.add_paragraph(i, style='List Number')flag=1if '人工智能' in i:if flag ==0:result.add_paragraph(i, style='List Number')flag=1

按专业来划分这些段落,将有信通专业及其相关词的段落全部取出,排除掉其中包含有信通公司但是属于现场作业类的段落,放在第二部分。

#按专业分类:paragraph2 = result.add_paragraph("\n信通公司相关内容:\n")for i in text:if '现场作业' in i:continueif '信通公司' in i:print(i)result.add_paragraph(i, style='List Number')if '信通分公司' in i:print(i)result.add_paragraph(i, style='List Number')if '信息通信分公司' in i:print(i)result.add_paragraph(i, style='List Number')

3. 输出word

result.save("每日要情智能分类结果.docx")

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载黄海广老师《机器学习课程》视频课黄海广老师《机器学习课程》711页完整版课件

本站qq群955171419,加入微信群请扫码:

【Python】实战多word的内容合并筛选及输出相关推荐

  1. python批量提取word指定内容_使用python批量读取word文档并整理关键信息到excel表格的实例...

    目标 最近实验室里成立了一个计算机兴趣小组 倡议大家多把自己解决问题的经验记录并分享 就像在CSDN写博客一样 虽然刚刚起步 但考虑到后面此类经验记录的资料会越来越多 所以一开始就要做好模板设计(如下 ...

  2. 【Python 实战基础】Pandas如何统筛选复制某个数据

    目录 一.实战场景 二.主要知识点 文件读写 基础语法 Pandas query to_csv 三.菜鸟实战 1.创建 python 文件 2.运行结果 一.实战场景 实战场景:Pandas如何统筛选 ...

  3. python批量提取word指定内容_python word 段落提取

    如何用python读取word 使用Python的内部方法open()读取文本文件try:f=open('/file','r')print(f.read())finally:if f:f.close( ...

  4. python批量提取word指定内容_python批量提取word内信息

    单位收集了很多word格式的调查表,领导需要收集表单里的信息,我就把所有调查表放一个文件里,写了个python小程序把所需的信息打印出来 #coding:utf-8 import os import ...

  5. python批量提取word指定内容到excel_(转)用python批量读取word文档并整理关键信息到excel表格...

    目标 最近实验室里成立了一个计算机兴趣小组 倡议大家多把自己解决问题的经验记录并分享 就像在CSDN写博客一样 虽然刚刚起步 但考虑到后面此类经验记录的资料会越来越多 所以一开始就要做好模板设计(如下 ...

  6. python合并word表格单元格_python docx模块读取word表格遇到合并单元格时的处理

    python docx模块读取word表格遇到合并单元格时的处理 python docx模块读取word表格遇到合并单元格时的处理 python docx模块读取word表 遇到合并单元格时的处理 通 ...

  7. python实现word文档合并

    目录 背景: 设计思路: 查看各目录未提交名单: 合并word文件: 脚本环境说明: 完整代码: 功能执行效果图: 总结: 背景: 由于工作需要,现在有这么一个需求,要合并大量的word文档,而且要在 ...

  8. 基于Python中docx与docxcompose批量合并多个Word文档文件并逐一添加分页符

      现有多个Word文件,需将其按名称顺序合并为一个新的Word文件,且需保证每一次合并时,都另起一页(即新的Word文件一页中,不能出现两个及以上的原本Word文件的内容).   一般的,实现多个W ...

  9. python导入word转换的html,python如何转换word格式、读取word内容、转成html

    # python如何转换word格式.读取word内容.转成html? import docx from win32com import client as wc # 首先将doc转换成docx wo ...

最新文章

  1. Exchange2010之资源邮箱
  2. VTK:可视化算法之FlyingHeadSlice
  3. 如何安装php网站,如何安装部署PHP网站
  4. weblogic 建立websocket连接报404_基于 Serverless 与 Websocket 的聊天工具实现
  5. Python四大金刚之一:列表
  6. R语言 plot()函数 基础用法
  7. HTML+CSS+JS实现 ❤️酷炫3D瀑布流动画特效❤️
  8. sonarqube怎么分析php项目,SonarQube代码质量分析平台介绍
  9. winform下自绘提示框风格窗体
  10. matlab怎么画园与椭圆,[转载]【MATLAB】画圆和椭圆
  11. 提升源代码安全管控 从源头保护敏感数据
  12. PHP操作tcpdf插件生成PDF
  13. LNMP详解(十三)——Nginx子页面详解
  14. lasso模型可以用spss_互助问答第65期: 静态面板模型可以用GMM估计吗?
  15. axure 鼠标样式_Axure教程:简单开关按钮的实现
  16. insmod: can‘t insert ‘xx.ko‘: File exists 问题解决
  17. r语言如何计算t分布临界值_医学统计与R语言:这个Calibration plot有点色!
  18. 深入分析一个经典的单片机供电电路
  19. 机器学习和深度学习的主要术语(中英)
  20. 大佬终于把鸿蒙OS讲明白了,以后我也可以吹喽!

热门文章

  1. 第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s
  2. Android 手机卫士--9patch图
  3. Rhythmk 学习 Hibernate 08 - Hibernate annotation 关联关系注解
  4. 用filter实现web程序的统一认证
  5. C#中的String编码转换
  6. WordPress个性页面制作教程
  7. C# 调用WSDL接口及方法
  8. Leetcode 255. Verify Preorder Sequence in Binary Search Tree
  9. php html5 css样式,怎么在html页面写css样式表
  10. spark 动态预加载数据_热门大数据引擎/组件概要