最近帮公司HR从智联招聘下载简历录入信息,写了个小程序自动录入。

第一步 把doc文件转为txt文件

因为doc文件中嵌套大量隐藏表格,超链接之类的格式,用docx这个库读取时很多信息显示不出来(也可能是我不会),就想到把doc转换为无格式的txt文件。

第二步 从txt文件中提取信息

转换为txt后惊喜的发现不同文件的相同信息基本都在相同的位置,比如姓名、性别;
对于不在相同位置的信息,就用正则表达式匹配。

第三步 把上述信息存入excel导出

第四步 把程序打包成exe文件运行

  • 参考以下链接:https://blog.csdn.net/qq_34686440/article/details/89001114*
    
pyinstaller xxx.pypyinstaller -F xxx.py

虽然程序在jupyter notebook里可以运行,但是,打包好的exe文件总是闪退,这里出现了几个问题:

  1. 我把第二步 “从txt文件中提取信息” 和第三步“导出excel”分成3个函数写,一个是获取文件夹中txt文件,返回一个列表;第二个是一个一个打开文件获取信息;第三个函数是导出excel。这里第二个函数需要用到第一个函数的返回值;第三个函数也需要用到第二个步骤里返回的列表,写入excel,这里出现了点问题,后来我把这3个函数合并成一个了。

  2. 合并函数后还是会闪退(就只执行到把所有doc转换成txt就闪退了),但是并没有显示问题在哪。后来通过cmd里直接运行exe文件,得知了错误在哪。

  • 参考以下链接:https://blog.csdn.net/wltsysterm/article/details/104632879*
    

    显示如下错误:
    'utf-8' codec can't decode byte 0xbc in position 0: invalid start byte**

    原因是我之前转换的txt文件中是中文,但并没有指定为utf-8格式,所以在转换txt的时候,直接指定为utf-8格式的txt。并在打开txt文件提取信息时,指定utf-8格式。

    修改了这2处,exe文件终于可以运行了!

  • 参考以下链接:https://blog.csdn.net/sinat_33455447/article/details/101020285*
    

完整代码

import os
import fnmatch
import win32com.client
import xlwt
import rePATH_DATA = os.path.abspath(r"C:\Users\Desktop\resume")  #word简历存放路径
path = r"C:\Users\Desktop\resume"    # 导出txt文件存放路径def to_txt():wordapp = win32com.client.gencache.EnsureDispatch("Word.Application")try:for root, dirs, files in os.walk(PATH_DATA):for _dir in dirs:passfor _file in files:if not (fnmatch.fnmatch(_file, '*.doc') or fnmatch.fnmatch(_file, '*.docx')) or _file.startswith("~"):continueprint('_file:',_file)file = os.path.join(root, _file)wordapp.Documents.Open(file)if fnmatch.fnmatch(_file, '*.doc'): #匹配doc文档file = file[:-3] + 'txt'else:               #匹配docx文档file = file[:-4] + 'txt'wordapp.ActiveDocument.SaveAs(file, FileFormat=win32com.client.constants.wdFormatText,Encoding=65001)   # 这里直接转换为 utf-8 格式的txt# https://docs.microsoft.com/zh-cn/office/vba/api/Office.MsoEncoding   各种格式代码在这里查wordapp.ActiveDocument.Close()finally:wordapp.Quit()# In[25]:def fileinfo():files = os.listdir(path)fileList = []for f in files:if(os.path.isfile(path + '/' + f)): # 判断是否为文件if f.endswith("txt"):fileList.append(f)list = []for file in fileList:data = []with open(path + "/" + file,'r',encoding='UTF-8') as f:   # 这里指定为utf-8for line in f:data.append(line) inlist = []# 获取姓名,所有文档姓名位置相同inlist.append(data[10][:-1])                   # 获取性别,所有文档性别位置相同inlist.append(data[13][0])# 获取电话号码t = []for ls in data:y = re.findall("1[0-9]{10}",ls)if len(y) != 0 :t = yinlist.append(t[0])                 # 获取邮箱k = []for ls in data:y = re.findall("E-mail.*@*.*",ls)if len(y) != 0 :k = yinlist.append(k[0][7:])# 获取学校专业学历e = []for ls in data:y = re.findall("教育经历.*",ls)if len(y) != 0 :num = data.index(ls)+1e = data[num]e = e.split()inlist.append(e[-3:][0])inlist.append(e[-3:][1])inlist.append(e[-3:][2])# 获取时间inlist.append(data[7][:-1])list.append(inlist)# 写入excelbook = xlwt.Workbook()sheet = book.add_sheet('sheet1')# hang = 0for i in range(len(list)):for j in range(len(list[i])):sheet.write(i, j, list[i][j])book.save(r"C:\Users\Desktop\resume\resume"+'.xls')    # excel存放路径if __name__ == '__main__':  to_txt()fileinfo()os.system("pause")

【Python】批量从doc简历中提取出需要的信息相关推荐

  1. python显示dgn_在 Workbench中提取和使用日志信息

    原标题:在 Workbench中提取和使用日志信息 ·FailTruncated.fmw ·GetAffineParameters.fmwt ·DGNMetadata.fmwt 二.使用Python ...

  2. Excel如何批量从中英文混合文本中提取出汉字

    如下图,B列单元格为中英文混合文本,现在想要批量从B列单元格中提取出汉字. ​ 选中B2:B11单元格区域 点击下图选项(Excel工具箱,百度即可了解详细的下载安装方法,本文这里就不做具体介绍.) ...

  3. python简历数据提取_如何使用pyPDF2从PDF格式的多页简历中提取文本数据?

    我从PDF格式的多页简历中提取文本内容,并尝试使用pyPDF2将内容写入文本文件.但是我在尝试写内容时收到了以下错误消息.在 这是我的代码:import PyPDF2 newFile = open(' ...

  4. Python批量设置pptx文件中文本框边框与填充样式(含20分钟视频讲解)

    近期会议: 10月30-11月1日 全国高校Python课程高级研修班(苏州) 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清 ...

  5. mysql src.rpm_从.src.rpm包中提取出完整的源码的方法

    1 什么是完整的源码 就是说,最初始的源码加上打了所有的patch后的源码,即最新的源码. 2 过程 2.1 从.src.rpm中提取完整的rpm工程文件 2.1.1 rpm to cpio rpm2 ...

  6. python批量翻译excel表格中的英文

    python批量翻译excel表格中的英文 需求背景 主要设计 分析 具体实现 表格操作 请求百度翻译api 多线程 控制台显示进度 完整源码 需求背景 女朋友的论文需要爬取YouTube视频热评,但 ...

  7. 从QQ浏览器缓存文件中提取出完整的视频

    原文地址为: 从QQ浏览器缓存文件中提取出完整的视频 linux系统解决方案,mac应该也可以 https://github.com/lxhao/merge_video_cache 1. 本实验以安卓 ...

  8. python 数据导入mysql_用python批量向数据库(MySQL)中导入数据

    用python批量向数据库(MySQL)中导入数据 现有数十万条数据,如下的经过打乱处理过的数据进行导入 数据库内部的表格的数据格式如下与下面的表格结构相同Current database: pyth ...

  9. 从爬取的文章 HTML 中提取出中文关键字

    分2步. 1.从 HTML 中提取出纯文本(去掉标签) import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import o ...

最新文章

  1. 小程序之通过参数改变标签
  2. 指针数组(主要用于二维的数组)
  3. xcode快速开发 代码块
  4. SAP UI5日期字段关于时区GMT的处理
  5. ffmpeg 时间戳
  6. jgit_JGit身份验证说明
  7. 终端乱码的终极解决方案
  8. ViewPager外部获取“当前显示的页面的位置position”
  9. phpcms 调用多级栏目和多级栏目下的文章列表
  10. java链表实现二叉树_Java 实现链表、二叉树的一些问题
  11. 计算机组成原理实验主存储器,计算机组成原理实验课件--存储器讲解.ppt
  12. java后台生成分页_Java实现分页的前台页面和后台代码
  13. 由input type=file /获取的file.type为空字符串引申浏览器是如何获取文件的MIME类型...
  14. 《Java语言程序设计》(基础篇原书第10版)第七章复习题答案
  15. Docker【部署 02】可视化工具DockerUI和Shipyard安装使用实例
  16. 颠覆你想象的150个故事(1)
  17. https://www.cloudmidi.net/ableton-live-11-suite-v11-0-macos.html
  18. JavaScript关闭窗口的方法
  19. 【高效办公】Everything高效应用案例——软件基本信息篇
  20. 8080端口被占怎么解决

热门文章

  1. XPVOL工行版的序列号
  2. 中国艾草行业供需前景与产销规模预测报告2022版
  3. 2018年第二届机械工程与应用复合材料国际会议(MEACM2018)
  4. KeePass 2.37版本的简体中文翻译更新
  5. 华为交换机 tagged 与 untagged 的关系
  6. 批处理-快速格式化硬盘(全自动进行)
  7. yolov5实时检测屏幕python代码
  8. 【Linux】crontab用法详解
  9. iOS UITableView 取消弹性效果
  10. (附源码)计算机毕业设计SSM健身房管理系统设计