前言:
本文是一位学弟的投稿,主要是用Python将格式不一致的信评简报Word文档快速生成标准格式的表格,涉及到两步,一是读取所有Word文件,二是处理里面的数据并输出到表格里,能大大提高工作的效率,也可看出Python并不仅仅是能数据分析,更能与我们日常的office工具高度交互。我这里大致的总结下日常工作中能用Python解决的办公需求:1、excel分析:pandas
pandas是非常好用的处理excel表格数据的模块,再结合正则、列表推导式基本可以替代excel的数据处理,并能实现很多excel较难实现的功能。2、文件处理:OS模块
批量修改文件名,创建、删除、读取文件
3、Word文档:docx
本文主要用的是该模块
4、PDF读取:pdfplumber
该模块可以读取PDF文档,结合正则分析,可以抓取出想要的数据或者内容。5、解压文件:zipfile
轻松解压压缩文件。6、爬虫:requests和selenium
requests基本能解决大部分爬虫需求,需要学习正则,并会分析网页结构。selenium是模拟人工操作,在requests无法爬取的时候,可以使用这个模块,只不过速度有点慢。正文:
python作为一个优秀的脚本语言,在办公自动化方面有着无与伦比的优势。最近遇到一个需求:把最近几年部门的所有信评简报(全部为docx格式)整理出来一个列表,并在文档首页加一个表格,注明审核人、审核日期与审核意见。这项工作如果手动进行不仅费时费力而且容易出错,请实习生帮忙的话由于此工作过分枯燥容易推高实习生的离职率,利用python能够又好又快的完成这项工作。同样的思路也可以运用到分销协议、债券交易协议等格式文档的自动制作中。 首先,数千个docx文件是存储在数个文件夹中的,命名也是千奇百怪,有些以发行主体全程+信评简报命名,有些以简称+信评简报命名,有些直接以简称命名。为了能较快的将数千个文件统计出来,我们使用DOS时代就家喻户晓的dir命令进行导出。相信大家小学二年级就学过dir命令的用法,加/s就是遍历当前目录及子目录文件。通过快捷键Win+R呼唤出运行对话框,输入cmd打开命令提示符。先用cd命令把命令提示符的工作目录切换到文件存储的路径下,然后键入“dir/s *.docx>doclist.txt”,所有拓展名前三位为doc的文件清单便输出到了同目录的doclist.txt中。(dir命令由于dos时代的限制只能匹配三位字母的拓展名,所以这里*.doc和*.docx的效果是一样的) 之后便可以将txt文本在excel中经过分列等步骤处理得到文件名的列表,再使用xlookup(office365的新功能,用于替代vlookup,支持通配符匹配等多项新功能)利用通配符快速将文件名与对应的发行主体进行匹配。最终你得到了一个类似这样的表格。将其另存为csv格式(最好选择utf-8(逗号分隔),不然还需要在python函数中单独声明编码类型)具体代码如下:
程序处理速度很快,每秒钟大概6-7个文件,输出效果如下: