Maison > Article > développement back-end > Pratique d'automatisation Python pour la sélection des CV
Cet article vous apporte des connaissances pertinentes sur python, qui introduit principalement les problèmes liés à la sélection des CV, notamment la définition de la classe ReadDoc pour lire les fichiers Word et la définition de la fonction search_word pour filtrer. Jetons-y un coup d'œil ensemble, j'espère que ce sera le cas. être utile à tout le monde. Y Apprentissage recommandé : Tutoriel vidéo tPython
Reprendre la sélection
Reprendre Les informations associées sont les suivantes :
Définir la classe readdoc pour lire les fichiers WordConnaître les conditions :
Pour trouver des CV contenant des mots-clés spécifiés (tels que Python, Java)
Idée de mise en œuvre :
Lisez chaque fichier Word par lots (obtenez des informations sur les mots via glob), obtenez tout leur contenu lisible et transmettez les mots-clés Filtrer par méthode pour obtenir l’adresse de CV cible.
这里有个需要注意的地方就是,并不是所有的 "简历" 都是以段落的形式呈现的,比如从 "猎聘" 网下载下来的简历就是 "表格形式" 的,而 "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
Une chose à noter ici est que tous les "CV" ne sont pas présentés sous forme de paragraphes. Par exemple, le CV téléchargé depuis le site "Liepin" est sous forme de "tableau", et le CV téléchargé depuis. "boss" est sous forme de "paragraphe". Lorsque vous le lisez ici, vous devez faire attention. L'exercice de script de démonstration que nous avons réalisé est sous forme de "tableau".
Ici, on peut définir spécifiquement une classe "ReadDoc", qui définit deux fonctions de lecture des "paragraphes" et des "tableaux".
# 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)
Regardez les résultats d'exécution de la classe ReadDoc
Définissez la fonction search_word à filtrer le contenu du fichier Word qui correspond au CV que vous voulez
OK, le document Word du CV a été lu avec succès ci-dessus. Ensuite, nous devons filtrer les CV contenant des mots-clés en sélectionnant les informations sur les mots-clés dans le contenu lu.Le scénario du cas pratique est le suivant : rrreeeLes résultats d'exécution sont les suivants :
🎜🎜🎜🎜🎜🎜Apprentissage recommandé : 🎜Tutoriel vidéo python🎜🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!