前言

有一天朋友A向我抱怨,他的老板要求他把几百份word填好的word表格简历信息整理到excel中,看着他一个个将姓名,年龄……从word表格里复制粘贴到excel里,边粘贴心里边暗暗诅咒着自己的boss……但毕竟新手小白,又不能违背老板的意愿说我不干了,爱咋咋地,于是过来向我求助。我说,这事情好办啊,学学python就能解决啊,简单容易上手。好了,接下来进入正题。
思路:首先针对每一份word表格进行分析

怎么才能利用python获取到word表格里面的信息,最初的想法是把word里面的表格转成网页格式,毕竟混迹爬虫浅水区多年,用正则表达式处理网页来获取信息是比较轻松的,于是想到把word转成网页格式,这么一想,整个人都疯了,几百份文件打开然后转成网页,那也有不少劳动量啊。于是在网上搜了许久,发现docx文件自己本身是压缩文件,打开压缩包之后竟然发现里面有个专门存储word里面文本的文件。

打开文件找,发现我们想要的信息全都藏在这个名为document.xml的文件里

于是基本过程就可以确定了
1. 打开docx的压缩包
2. 获取word里面的正文信息
3. 利用正则表达式匹配出我们想要的信息
4. 将信息存储到txt中(txt可以用excel打开)
5. 批量调用上述过程,完成一万份简历的提取工作
6. (检查数据是否有错误或缺失)

0x01 获取docx信息

利用python的zipfile库以及re库来处理docx压缩包里面的document.xml文件里的信息。

import zipfile
import re
def get_document(filepath):z = zipfile.ZipFile(filepath, "r")text = z.read("word/document.xml").decode("UTF-8")text = re.sub(r"<.*?>", "", text)#去除xml里的所有标记符###如果多份简历在同一个word文件里####table_list = text.split("XX简历")[1:]#依据简历标题切分每一份简历信息#return table_listreturn text

打印text的结果

自此,输出了简历中的所有相关信息

0x02 抓取各字段值

接下来根据这些相关信息抓取各个字段的值

import re
def get_field_value(text):value_list = []m = re.findall(r"姓 名(.*?)性    别", table)value_list.append(m)m = re.findall(r"性    别(.*?)学    历", table)value_list.append(m)m = re.findall(r"民 族(.*?)健康状况", table)value_list.append(m)    '''此处省略其他字段匹配'''return value_list

这样就将每个字段匹配到的内容以一个列表的形式返回了

0x03 将内容写入到文件

接下来将这个列表里的内容写入到txt中

str1 = ""
for value in value_list:str1 = str1 + str(value[0]) + "\t"#每个字段值用制表符\t分隔
str1 = str1 + "\n"
with open("result.txt", "a+") as f:#将内容以追加形式写入到result.txt中f.write(str1)

以上是将一个word转成了txt
只要再对文件夹中的文件进行批量处理就ok了

0x04 批量处理完整代码

以下附上完整代码

import re
import zipfile
import os
def get_document(filepath):z = zipfile.ZipFile(filepath, "r")text = z.read("word/document.xml").decode("UTF-8")text = re.sub(r"<.*?>", "", text)#去除xml里的所有标记符###如果多份简历在同一个word文件里###table_list = text.split("XX简历")[1:]#依据简历标题切分每一份简历信息return table_listdef get_field_value(text):value_list = []m = re.findall(r"姓 名(.*?)性    别", table)value_list.append(m)m = re.findall(r"性    别(.*?)学    历", table)value_list.append(m)m = re.findall(r"民 族(.*?)健康状况", table)value_list.append(m)    '''此处省略其他字段匹配'''return value_listcv_list = []
for i in os.listdir(os.getcwd()):a = os.path.splitext(os.getcwd() + "\\" + i)#获取当前目录下所有文件的文件名if a[1] == '.docx':#如果文件后缀print(os.getcwd()+"\\"+i)cv_list = cv_list + get_document(os.getcwd() + "\\" + i)#每份简历信息为一个列表元素for i in cv_list:value_list = get_field_value(i)str1 = ""for value in value_list:str1 = str1 + str(value[0]) + "\t"str1 = str1 + "\n"with open("result.txt", "a+") as f:f.write(str1)

一万份word表格简历信息转成了txt,然后用excel打开txt即可。

后记

后来,朋友A对我说,老板夸奖他会python,把这件事情做的又快又好。很快他被调到了其他部门,不再处理这些琐碎的事情,从此升职加薪,走上了”出任CEO,迎娶白富美“的康庄大道。
本集完
(为毛我还在苦逼地码python,哭)

利用python处理一万份word表格简历相关推荐

  1. 利用python的docx模块处理word和WPS的docx格式文件

    Python docx module for Word or WPS processing 本文是通过docx把word中的表格中的某些已填好的内容提取出来,存入excel表格. 首先安装docx的p ...

  2. 【Python数据分析】利用Python快速对两个EXCEL表格进行内容比较并找出差异

    如何快速找到两个EXCEL表格的数据差异?今天就与大家分享如何利用Python数据分析3分钟搞定,不管EXCEL表格有多少行数据,代码总是那么几行.不多说了,上案例(文末附Python数据分析案例下载 ...

  3. python对excel增删改查语句_利用python模拟sql语句对员工表格进行增删改查

    本文主要给大家介绍了关于python模拟sql语句对员工表格进行增删改查的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 具体需求: 员工信息表程序,实现增删改查操作: 可进行模糊查询, ...

  4. python对excel增删改查_利用python模拟sql语句对员工表格进行增删改查

    本文主要给大家介绍了关于python模拟sql语句对员工表格进行增删改查的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 具体需求: 员工信息表程序,实现增删改查操作: 可进行模糊查询, ...

  5. Python实现分析pdf或者Word形式简历,并且保存到Excel中

    Python实现分析当前文件夹里面所有的pdf或者Word形式简历,并且保存到Excel中 # -*- coding:utf-8 -*-#作者:公众号:湾区人工智能 #功能:实现分析pdf或者Word ...

  6. 利用python批量合并excel和word内的表格

    1.依赖: python 3.9.7,python-docx==0.8.11,pandas==1.3.4 ,os 2.配置环境 pip install python-docx pip install ...

  7. python excel 转json_Python办公自动化| word 表格转excel

    之前写过一篇 Python办公自动化 | 批量word报告生成工具 ,有小伙伴提出了逆向需求,即:从批量word中获取内容并写入excel,需求背景是汇总一些材料,举例:实习鉴定表.个人简历.档案等. ...

  8. Python实例29:利用python自动创建多个Excel表格

    我们可以通过python自动创建多个命名有规律的工作簿,这样就可以提高效率,节省我们的时间.具体代码如下: 实例代码 import xlwings as xw # 导入库 app = xw.App(v ...

  9. python 读取 word 表格_python读取word表格

    python调用com,如何完成word表格操作 word中doc这个格式的文件是微软特有格式,微软没有向外公开任何的api接口文档,只能通过微软提供的OLE组件来提其COM接口,只要你的机器上安装了 ...

最新文章

  1. 嵌入式linux内存使用和性能优化
  2. Linux下通过gettimeofday函数获取程序段执行时间
  3. Javascript调试之console对象,它的一些小技巧你都知道吗?
  4. 聚焦LS-MIMO的四大层面,浅谈5G关键技术
  5. 一张图看懂hadoop
  6. tensorflow的pb文件转化为pbtxt
  7. k6前级效果器怎么用_【易开EK-K6 DSP 专业 数字前级效果器 前置】价格_厂家_图片 -Hc360慧聪网...
  8. qt中的句柄类,实体类
  9. 3dmax人物模型制作全的步骤
  10. 标题:书号验证 2004年起,国际ISBN中心出版了《13位国际标准书号指南》。 原有10位书号前加978作为商品分类标识;校验规则也改变。 校验位的加权算法与10位ISBN的算法不同,具体算法是
  11. 高质量程序设计指南(笔记)
  12. 三角函数π/2转化_高中数学:三角函数知识点
  13. s5pv210的工作模式
  14. python学习实验报告(第十周)
  15. MLK | 非监督学习最强攻略
  16. c语言eof_C语言持续深耕
  17. 2021年煤气考试题及煤气模拟试题
  18. 中兴电信光纤猫F450获取管理员密码方法
  19. taglib 原理和实现[转载]
  20. gatling简单使用说明

热门文章

  1. 易特鞋店销售管理后台软件(5)
  2. 风讯CMS提交时出现System.Web.HttpRequestValidationException (0x80004005):错误
  3. java终极面试题目总结
  4. 联想拯救者R7000+加装SSD+原D盘信息复制分区到新SSD
  5. 《完美世界国际版》客户端下载
  6. 手机市场环境分析2022
  7. c#,catch(Exception ex)的ex是什么意思
  8. 保姆级神器 Maven,再也不用担心项目构建搞崩了
  9. 对Android和iOS项目中的模块结构和类结构设计的探讨
  10. 怎么从已有文件中挑选需要的文字重新生成新文件_Word文字处理中,如果单击“文件”选项卡中的()按钮,Word会在工作区产生新的空文档。...