本篇文章為大家帶來了關於python的相關知識,其中主要介紹了關於簡歷篩選的相關問題,包括了定義ReadDoc 類用以讀取word 文件以及定義search_word 函數用以篩選的相關內容,以下一起來看一下,希望對大家有幫助。
推薦學習:python影片教學
履歷相關資訊如下:
已知條件:
想要尋找包含指定關鍵字的履歷(如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
類別的執行結果
#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自動化實作篩選履歷的詳細內容。更多資訊請關注PHP中文網其他相關文章!