首頁  >  文章  >  後端開發  >  Python自動化實作篩選履歷

Python自動化實作篩選履歷

WBOY
WBOY轉載
2022-06-07 18:59:263354瀏覽

本篇文章為大家帶來了關於python的相關知識,其中主要介紹了關於簡歷篩選的相關問題,包括了定義ReadDoc 類用以讀取word 文件以及定義search_word 函數用以篩選的相關內容,以下一起來看一下,希望對大家有幫助。

Python自動化實作篩選履歷

推薦學習:python影片教學

# 履歷表篩選

履歷相關資訊如下:


Python自動化實作篩選履歷


 定義ReadDoc 類別用來讀取word 檔案

已知條件:

想要尋找包含指定關鍵字的履歷(如Python、Java)


實作想法:

批次讀取每一個word 檔案(透過glob 取得word 資訊),將他們的所有可讀內容獲取,並透過關鍵字方式篩選,拿到目標履歷地址。


這裡有個需要注意的地方就是,並不是所有的"簡歷" 都是以段落的形式呈現的,比如從"獵聘" 網下載下來的簡歷就是"表格形式" 的,而"boss" 下載的簡歷就是"段落形式" 的,這裡再進行讀取的時候需要注意下,我們做的演示腳本練習就是"表格形式" 的。


這裡的話,我們就可以專門定義一個 "ReadDoc" 的類,裡面定義兩個函數,分別用來讀取 "段落" 和 "表格" 。

實操案例腳本如下:

# coding:utf-8from docx import Documentclass 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 類別的執行結果


Python自動化實作篩選履歷


定義search_word 函數用以篩選word 文件內容符合想要的簡歷

#OK,上文已經成功讀取了簡歷的word 文檔,接下來我們要將讀取到的內容透過帥選關鍵字訊息的方式,過濾出包含關鍵字的履歷。

實操案例腳本如下:

# coding:utf-8import globfrom docx import Documentclass 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_resultif __name__ == '__main__':
    path = glob.os.path.join(glob.os.getcwd(), '*')
    result = search_word(path, ['python', 'golang', 'react', '埋点'])      # 埋点是为了演示效果,故意在 "简历1.docx" 加上的
    print(result)

執行結果如下:


Python自動化實作篩選履歷


推薦學習: python影片教學

以上是Python自動化實作篩選履歷的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除