Python Word文件自动化实战之简历筛选

 更新时间:2022年05月12日 11:20:02   作者:渴望力量的哈士奇  
本文将利用Python自动化做一个具有实操性的小练习,即通过读取简历来筛选出符合招聘条件的简历。文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

上一章节我们练习了通过表格和段落获取 word 文件的信息之后,现在来做一个具有实操性的小练习。通过读取简历来筛选出符合招聘条件的简历,接下来看看要如何实现这个小功能。

简历筛选

简历相关信息如下:

定义 ReadDoc 类用以读取 word 文件

已知条件:

想要查找包含指定关键字的简历(比如 Python、Java)

实现思路:

批量读取每一个 word 文件(通过 glob 获取 word 信息),将他们的所有可读内容获取,并通过关键字方式筛选,拿到目标简历地址。

这里有个需要注意的地方就是,并不是所有的 "简历" 都是以段落的形式呈现的,比如从 "猎聘" 网下载下来的简历就是 "表格形式" 的,而 "boss" 上下载的简历就是 "段落形式" 的,这里再进行读取的时候需要注意下,我们做的演示脚本练习就是 "表格形式" 的。

这里的话,我们就可以专门定义一个 "ReadDoc" 的类,里面定义两个函数,分别用于读取 "段落" 和 "表格" 。

实操案例脚本如下:

# coding:utf-8

from docx import Document

class ReadDoc(object):              # 定义一个 ReadDoc ,用以读取 word 文件
    def __init__(self, path):       # 构造函数默认传入读取 word 文件的路径
        self.doc = Document(path)
        self.p_text = ''
        self.table_text = ''

        self.get_para()
        self.get_table()

    def get_para(self):             # 定义 get_para 函数用以读取 word 文件的段落
        for p in self.doc.paragraphs:
            self.p_text += p.text + '\n'    # 读取的段落内容进行换行
        print(self.p_text)

    def get_table(self):            # 定义 get_table 函数循环读取表格内容
        for table in self.doc.tables:
            for row in table.rows:
                _cell_str = ''      # 获取每一行的完整信息
                for cell in row.cells:
                    _cell_str += cell.text + ','    # 每一行加一个 "," 隔开
                self.table_text += _cell_str + '\n'     # 读取的表格内容进行换行
        print(self.table_text)

if __name__ == '__main__':
    path = glob.os.path.join(glob.os.getcwd(), 'test_file/简历1.docx')
    doc = ReadDoc(path)
    print(doc)

看一下 ReadDoc 类的运行结果

定义 search_word 函数用以筛选 word 文件内容符合想要的简历

OK,上文已经成功读取了简历的 word 文档,接下来我们要将读取到的内容通过帅选关键字信息的方式,过滤出包含有关键字的简历。

实操案例脚本如下:

# coding:utf-8

import glob

from docx import Document

class ReadDoc(object):              # 定义一个 ReadDoc ,用以读取 word 文件
    def __init__(self, path):       # 构造函数默认传入读取 word 文件的路径
        self.doc = Document(path)
        self.p_text = ''
        self.table_text = ''

        self.get_para()
        self.get_table()

    def get_para(self):             # 定义 get_para 函数用以读取 word 文件的段落
        for p in self.doc.paragraphs:
            self.p_text += p.text + '\n'    # 读取的段落内容进行换行
        # print(self.p_text)        # 调试打印输出 word 文件的段落内容

    def get_table(self):            # 定义 get_table 函数循环读取表格内容
        for table in self.doc.tables:
            for row in table.rows:
                _cell_str = ''      # 获取每一行的完整信息
                for cell in row.cells:
                    _cell_str += cell.text + ','    # 每一行加一个 "," 隔开
                self.table_text += _cell_str + '\n'     # 读取的表格内容进行换行
        # print(self.table_text)    # 调试打印输出 word 文件的表格内容


def search_word(path, targets):     # 定义 search_word 用以筛选符合内容的简历;传入 path 与 targets(targets 为列表)
    result = glob.glob(path)
    final_result = []               # 定义一个空列表,用以后续存储文件的信息

    for i in result:             # for 循环获取 result 内容

        isuse = True                # 是否可用

        if glob.os.path.isfile(i):       # 判断是否是文件
            if i.endswith('.docx'):      # 判断文件后缀是否是 "docx" ,若是,则利用 ReadDoc类 实例化该文件对象
                doc = ReadDoc(i)
                p_text = doc.p_text         # 获取 word 文件内容
                table_text = doc.table_text
                all_text = p_text + table_text

                for target in targets:      # for 循环判断关键字信息内容是否存在
                    if target not in all_text:
                        isuse = False
                        break

                if not isuse:
                    continue
                final_result.append(i)
    return final_result

if __name__ == '__main__':
    path = glob.os.path.join(glob.os.getcwd(), '*')
    result = search_word(path, ['python', 'golang', 'react', '埋点'])      # 埋点是为了演示效果,故意在 "简历1.docx" 加上的
    print(result)

运行结果如下:

到此这篇关于Python Word文件自动化实战之简历筛选的文章就介绍到这了,更多相关Python简历筛选内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 对DJango视图(views)和模版(templates)的使用详解

    对DJango视图(views)和模版(templates)的使用详解

    今天小编就为大家分享一篇对DJango视图(views)和模版(templates)的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python实现快速多线程ping的方法

    Python实现快速多线程ping的方法

    这篇文章主要介绍了Python实现快速多线程ping的方法,实例分析了Python多线程及ICMP数据包的发送技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 使用Python实现一个优雅的异步定时器

    使用Python实现一个优雅的异步定时器

    在 Python 中实现定时器功能是一个常见需求,尤其是在需要周期性执行任务的场景下,本文给大家介绍了基于 asyncio 和 threading 模块,可扩展的异步定时器实现,需要的朋友可以参考下
    2025-04-04
  • Python绘制三维立体图详解与绘图填充方式

    Python绘制三维立体图详解与绘图填充方式

    这篇文章主要介绍了Python绘制三维立体图详解与绘图填充方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 自己搭建resnet18网络并加载torchvision自带权重的操作

    自己搭建resnet18网络并加载torchvision自带权重的操作

    这篇文章主要介绍了自己搭建resnet18网络并加载torchvision自带权重的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • python使用requests实现发送带文件请求功能

    python使用requests实现发送带文件请求功能

    这篇文章主要介绍了python使用requests实现发送带文件请求,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • Python实现的生成自我描述脚本分享(很有意思的程序)

    Python实现的生成自我描述脚本分享(很有意思的程序)

    这篇文章主要介绍了Python实现的生成自我描述脚本分享,很有意思的程序,绕的人有点头晕,需要的朋友参考下吧
    2014-07-07
  • python中itertools模块使用小结

    python中itertools模块使用小结

    itertools 是python的迭代器模块,itertools提供的生成迭代器的函数,相当高效且节省内存。使用这些工具,你将能够创建自己定制的迭代器用于高效率的循环。接下来通过本文给大家介绍python中itertools模块使用,感兴趣的朋友一起看看吧
    2021-11-11
  • python scrapy简单模拟登录的代码分析

    python scrapy简单模拟登录的代码分析

    在本篇文章里小编给大家整理的是一篇关于python scrapy简单模拟登录的代码分析,有兴趣的朋友们可以学习参考下。
    2021-07-07
  • 基于Python编写一个打印机批量打印队列工具

    基于Python编写一个打印机批量打印队列工具

    有时候我们在批量打印文件的时候,总会遇到电脑上打印机队列打不开的情况,为此我们可以利用Python写一个打印机批量打印队列,下面小编就来和大家详细讲讲吧
    2025-02-02

最新评论