Python Word文件自動化實(shí)戰(zhàn)之簡歷篩選
上一章節(jié)我們練習(xí)了通過表格和段落獲取 word 文件的信息之后,現(xiàn)在來做一個(gè)具有實(shí)操性的小練習(xí)。通過讀取簡歷來篩選出符合招聘條件的簡歷,接下來看看要如何實(shí)現(xiàn)這個(gè)小功能。
簡歷篩選
簡歷相關(guān)信息如下:

定義 ReadDoc 類用以讀取 word 文件
已知條件:
想要查找包含指定關(guān)鍵字的簡歷(比如 Python、Java)
實(shí)現(xiàn)思路:
批量讀取每一個(gè) word 文件(通過 glob 獲取 word 信息),將他們的所有可讀內(nèi)容獲取,并通過關(guān)鍵字方式篩選,拿到目標(biāo)簡歷地址。
這里有個(gè)需要注意的地方就是,并不是所有的 "簡歷" 都是以段落的形式呈現(xiàn)的,比如從 "獵聘" 網(wǎng)下載下來的簡歷就是 "表格形式" 的,而 "boss" 上下載的簡歷就是 "段落形式" 的,這里再進(jìn)行讀取的時(shí)候需要注意下,我們做的演示腳本練習(xí)就是 "表格形式" 的。
這里的話,我們就可以專門定義一個(gè) "ReadDoc" 的類,里面定義兩個(gè)函數(shù),分別用于讀取 "段落" 和 "表格" 。
實(shí)操案例腳本如下:
# coding:utf-8
from docx import Document
class ReadDoc(object): # 定義一個(gè) ReadDoc ,用以讀取 word 文件
def __init__(self, path): # 構(gòu)造函數(shù)默認(rèn)傳入讀取 word 文件的路徑
self.doc = Document(path)
self.p_text = ''
self.table_text = ''
self.get_para()
self.get_table()
def get_para(self): # 定義 get_para 函數(shù)用以讀取 word 文件的段落
for p in self.doc.paragraphs:
self.p_text += p.text + '\n' # 讀取的段落內(nèi)容進(jìn)行換行
print(self.p_text)
def get_table(self): # 定義 get_table 函數(shù)循環(huán)讀取表格內(nèi)容
for table in self.doc.tables:
for row in table.rows:
_cell_str = '' # 獲取每一行的完整信息
for cell in row.cells:
_cell_str += cell.text + ',' # 每一行加一個(gè) "," 隔開
self.table_text += _cell_str + '\n' # 讀取的表格內(nèi)容進(jì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 類的運(yùn)行結(jié)果

定義 search_word 函數(shù)用以篩選 word 文件內(nèi)容符合想要的簡歷
OK,上文已經(jīng)成功讀取了簡歷的 word 文檔,接下來我們要將讀取到的內(nèi)容通過帥選關(guān)鍵字信息的方式,過濾出包含有關(guān)鍵字的簡歷。
實(shí)操案例腳本如下:
# coding:utf-8
import glob
from docx import Document
class ReadDoc(object): # 定義一個(gè) ReadDoc ,用以讀取 word 文件
def __init__(self, path): # 構(gòu)造函數(shù)默認(rèn)傳入讀取 word 文件的路徑
self.doc = Document(path)
self.p_text = ''
self.table_text = ''
self.get_para()
self.get_table()
def get_para(self): # 定義 get_para 函數(shù)用以讀取 word 文件的段落
for p in self.doc.paragraphs:
self.p_text += p.text + '\n' # 讀取的段落內(nèi)容進(jìn)行換行
# print(self.p_text) # 調(diào)試打印輸出 word 文件的段落內(nèi)容
def get_table(self): # 定義 get_table 函數(shù)循環(huán)讀取表格內(nèi)容
for table in self.doc.tables:
for row in table.rows:
_cell_str = '' # 獲取每一行的完整信息
for cell in row.cells:
_cell_str += cell.text + ',' # 每一行加一個(gè) "," 隔開
self.table_text += _cell_str + '\n' # 讀取的表格內(nèi)容進(jìn)行換行
# print(self.table_text) # 調(diào)試打印輸出 word 文件的表格內(nèi)容
def search_word(path, targets): # 定義 search_word 用以篩選符合內(nèi)容的簡歷;傳入 path 與 targets(targets 為列表)
result = glob.glob(path)
final_result = [] # 定義一個(gè)空列表,用以后續(xù)存儲文件的信息
for i in result: # for 循環(huán)獲取 result 內(nèi)容
isuse = True # 是否可用
if glob.os.path.isfile(i): # 判斷是否是文件
if i.endswith('.docx'): # 判斷文件后綴是否是 "docx" ,若是,則利用 ReadDoc類 實(shí)例化該文件對象
doc = ReadDoc(i)
p_text = doc.p_text # 獲取 word 文件內(nèi)容
table_text = doc.table_text
all_text = p_text + table_text
for target in targets: # for 循環(huán)判斷關(guān)鍵字信息內(nèi)容是否存在
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', '埋點(diǎn)']) # 埋點(diǎn)是為了演示效果,故意在 "簡歷1.docx" 加上的
print(result)
運(yùn)行結(jié)果如下:

到此這篇關(guān)于Python Word文件自動化實(shí)戰(zhàn)之簡歷篩選的文章就介紹到這了,更多相關(guān)Python簡歷篩選內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
對DJango視圖(views)和模版(templates)的使用詳解
今天小編就為大家分享一篇對DJango視圖(views)和模版(templates)的使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Python實(shí)現(xiàn)快速多線程ping的方法
這篇文章主要介紹了Python實(shí)現(xiàn)快速多線程ping的方法,實(shí)例分析了Python多線程及ICMP數(shù)據(jù)包的發(fā)送技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
使用Python實(shí)現(xiàn)一個(gè)優(yōu)雅的異步定時(shí)器
在 Python 中實(shí)現(xiàn)定時(shí)器功能是一個(gè)常見需求,尤其是在需要周期性執(zhí)行任務(wù)的場景下,本文給大家介紹了基于 asyncio 和 threading 模塊,可擴(kuò)展的異步定時(shí)器實(shí)現(xiàn),需要的朋友可以參考下2025-04-04
自己搭建resnet18網(wǎng)絡(luò)并加載torchvision自帶權(quán)重的操作
這篇文章主要介紹了自己搭建resnet18網(wǎng)絡(luò)并加載torchvision自帶權(quán)重的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
python使用requests實(shí)現(xiàn)發(fā)送帶文件請求功能
這篇文章主要介紹了python使用requests實(shí)現(xiàn)發(fā)送帶文件請求,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12
Python實(shí)現(xiàn)的生成自我描述腳本分享(很有意思的程序)
這篇文章主要介紹了Python實(shí)現(xiàn)的生成自我描述腳本分享,很有意思的程序,繞的人有點(diǎn)頭暈,需要的朋友參考下吧2014-07-07
基于Python編寫一個(gè)打印機(jī)批量打印隊(duì)列工具
有時(shí)候我們在批量打印文件的時(shí)候,總會遇到電腦上打印機(jī)隊(duì)列打不開的情況,為此我們可以利用Python寫一個(gè)打印機(jī)批量打印隊(duì)列,下面小編就來和大家詳細(xì)講講吧2025-02-02

