Maison  >  Article  >  développement back-end  >  Pratique d'automatisation Python pour la sélection des CV

Pratique d'automatisation Python pour la sélection des CV

WBOY
WBOYavant
2022-06-07 18:59:263373parcourir

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

Pratique d'automatisation Python pour la sélection des CV Reprendre la sélection

Reprendre Les informations associées sont les suivantes :

Définir la classe readdoc pour lire les fichiers Word

Pratique d'automatisation Python pour la sélection des CV Connaî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".

Pratique d'automatisation Python pour la sélection des CV

Ici, on peut définir spécifiquement une classe "ReadDoc", qui définit deux fonctions de lecture des "paragraphes" et des "tableaux".

Le script du cas pratique est le suivant :

# 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 Pratique d'automatisation Python pour la sélection des CV

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer