python 批量提取word应聘登记表数据+情感分析

1.本代码做情感分析,需要先注册百度AI开发者账号,获取
APP_ID = '你的百度id '

API_KEY = '你的百度开发api'

SECRET_KEY = '你的百度开发密钥'

调用API.链接:https://ai.baidu.com/

2.对于不同格式的应聘登记表,需要具体定位数据位置
比如:name = tables[j].cell(0, 1).text 表示第j个表格第一行第二个数据
在header变量中可修改自己需要的字段

注意:全局变量不要重名,最后添加到row列表里即可。

from docx import Document

import pandas as pd

import os

import datetime

from openpyxl import Workbook

from aip import AipNlp

def sentiment_analysis(msg):

    APP_ID = '你的百度id '

    API_KEY = '你的百度开发api'

    SECRET_KEY = '你的百度开发密钥'

    client = AipNlp(APP_ID, API_KEY, SECRET_KEY)

    r=client.sentimentClassify(msg)

    now_mod_rank =r['items'][0]['positive_prob']

    return now_mod_rank

for fpath, dirs, fs in os.walk(r'E:\data\应聘登记表202007'):

    # name_list=[]

    wb = Workbook()

    sheet = wb.active

    header = ['序号','姓名', '英文名', '出生年月', '籍贯', '民族', '身份证','联系电话','微信号','邮箱地址','现居住地址','最快入职时间','最近一份工作合同截至日期',

                  '工作/实习起止年月','工作/实习单位名称','部门/职位','最后薪水','离职原因','证明人及联系方式','工作/实习起止年月2','工作/实习单位名称2','部门/职位2','最后薪水2','离职原因2','证明人及联系方式2',

                  '学历一','毕业院校及专业一','起止时间一','学历二','毕业院校及专业二','起止时间二','家庭关系','家庭成员','年龄','工作单位','职务职称','家庭成员联系电话','附加信息',"情感",'情感2']

    sheet.append(header)

    n = 0

    for dir in fs:

        print(dir)

        path = os.path.join(fpath, dir)

        doc = Document(path)

        table_index=0

        tables = doc.tables

        table_index=0

        for j in range(len(tables)):         

            table_index +=1

            if table_index ==1:

                    try:

                        # 姓名

                        global name,English_name, birth_date, ji_guan, min_zu,身份证,phone,wei_xin,you_xianag,address,ru_zhi,he_tong_date

                        name = tables[j].cell(0, 1).text

                        # name_list.append(name)

                        #英文名

                        English_name = tables[j].cell(0, 4).text

                        #出生日期

                        birth_date = tables[j].cell(0, 7).text

                        # if '-' in birth_date:

                        #    birth_date = datetime.datetime.strptime(birth_date, '%d/%m').strftime('2020/%m/%d')

                        # else:

                        #    birth_date = '/'

                        # 籍贯

                        ji_guan = tables[j].cell(0, 11).text

                        #民族

                        min_zu = tables[j].cell(0, 13).text

                        #身份证

                        身份证 = tables[j].cell(1, 2).text.strip()

                        # 联系电话

                        phone = tables[j].cell(1, 9).text.strip()

                        # 微信号

                        wei_xin = tables[j].cell(2, 2).text.strip()

                        # 邮箱地址

                        you_xianag = tables[j].cell(2, 9).text.strip()

                        # 现居住地址

                        address = tables[j].cell(3, 2).text.strip()

                        # 最快入职时间

                        ru_zhi = tables[j].cell(4, 2).text.strip()

                        # 最近一份工作合同截至日期

                        he_tong_date = tables[j].cell(4, 11).text.strip()


                    except Exception as error:

                        # 捕获异常,也可以用log写到日志里方便查看和管理

                        print(error)

                        continue

            if table_index ==2:

                    try:

                            global work_date, work_name, zhi_wei, last_salary,lizhi_reason,zheng_ming,work_date1,work_name1,zhi_wei1,last_salary1,lizhi_reason1,zheng_ming1,qing_gan,qing_gan2

                            # 工作/实习起止年月

                            work_date = tables[j].cell(1, 0).text

                            work_date1 =tables[j].cell(2, 0).text

                            #工作/实习单位名称

                            work_name = tables[j].cell(1, 1).text

                            work_name1 =tables[j].cell(2, 1).text

                            #部门/职位

                            zhi_wei = tables[j].cell(1, 2).text

                            zhi_wei1 = tables[j].cell(2, 2).text

                            # if '/' in birth_date:

                            #    birth_date = datetime.datetime.strptime(birth_date, '%d/%m').strftime('2020-%m-%d')

                            # else:

                            #    birth_date = '-'

                            # 最后薪水

                            last_salary = tables[j].cell(1, 3).text

                            last_salary1 = tables[j].cell(2, 3).text

                            #离职原因

                            lizhi_reason = tables[j].cell(1, 4).text

                            lizhi_reason1 =tables[j].cell(2, 4).text

                            #证明人及联系方式

                            zheng_ming = tables[j].cell(1,5).text.strip()

                            zheng_ming1 =tables[j].cell(2, 5).text.strip()

                            # n += 1

                            qing_gan = sentiment_analysis(lizhi_reason)

                            qing_gan2 = sentiment_analysis(lizhi_reason1)

                            print(n, work_date, work_name, zhi_wei, last_salary,lizhi_reason,zheng_ming )

                    except Exception as error:

                            # 捕获异常,也可以用log写到日志里方便查看和管理

                            print(error)

                            continue

            if table_index ==3:

                    # for i in range(0,10):

                    #    print( tables[j].cell(1, i).text,i)

                    global xue_li1, biye_cumpus1, cumpus_time1, xue_li2,biye_cumpus2,cumpus_time2

                    try:

                            # 学历一

                            xue_li1 = tables[j].cell(0, 1).text

                            #毕业院校及专业一

                            biye_cumpus1 = tables[j].cell(0, 3).text

                            #起止时间一

                            cumpus_time1 = tables[j].cell(0, 7).text

                            # if '/' in birth_date:

                            #    birth_date = datetime.datetime.strptime(birth_date, '%d/%m').strftime('2020-%m-%d')

                            # else:

                            #    birth_date = '-'

                            # 学历二

                            xue_li2 = tables[j].cell(1, 1).text

                            biye_cumpus2 = tables[j].cell(1, 3).text

                            #起止时间二

                            cumpus_time2 = tables[j].cell(1,7).text.strip()

                          
                    except Exception as error:

                            # 捕获异常,也可以用log写到日志里方便查看和管理

                            print(error)

                            continue

            if table_index ==4:

                    # for i in range(0,10):

                    #    print( tables[j].cell(1, i).text,i)

                    global family, familys, age, work_address,zhi_cheng,family_phone

                    try:

                            # 家庭关系

                            family = tables[j].cell(1, 0).text +'/'+ tables[j].cell(2, 0).text+'/'+ tables[j].cell(3, 0).text +'/'+ tables[j].cell(4, 0).text

                            #家庭成员

                            familys = tables[j].cell(1, 1).text +'/'+ tables[j].cell(2, 1).text +'/'+ tables[j].cell(3, 1).text +'/'+ tables[j].cell(4, 1).text

                            #年龄

                            age = tables[j].cell(1, 2).text +'/'+ tables[j].cell(2, 2).text +'/'+ tables[j].cell(3, 2).text +'/'+ tables[j].cell(4, 2).text

                            # if '/' in birth_date:

                            #    birth_date = datetime.datetime.strptime(birth_date, '%d/%m').strftime('2020-%m-%d')

                            # else:

                            #    birth_date = '-'

                            # 工作单位

                            work_address = tables[j].cell(1, 3).text  +'/'+ tables[j].cell(2, 3).text +'/'+ tables[j].cell(3, 3).text +'/'+ tables[j].cell(4, 3).text

                            #职务职称

                            zhi_cheng = tables[j].cell(1, 4).text +'/'+ tables[j].cell(2, 4).text +'/'+ tables[j].cell(3, 4).text +'/'+ tables[j].cell(4, 4).text

                            #家庭成员联系电话

                            family_phone = tables[j].cell(1,5).text.strip() +'/'+ tables[j].cell(2, 5).text +'/'+ tables[j].cell(3, 5).text +'/'+ tables[j].cell(4, 5).text
      

                    except Exception as error:

                            # 捕获异常,也可以用log写到日志里方便查看和管理

                            print(error)

                            continue

            if table_index ==5:

                    try:

                            # 家庭关系

                            fujia = tables[j].cell(0, 0).text

                            #家庭成员

                            n+=1

                            # print(fujia)

                            row = [n, name, English_name, birth_date, ji_guan, min_zu,身份证,phone,wei_xin,you_xianag,address,ru_zhi,he_tong_date,work_date, work_name, zhi_wei, last_salary,lizhi_reason,zheng_ming,

                                  work_date1,work_name1,zhi_wei1,last_salary1,lizhi_reason1,zheng_ming1,xue_li1, biye_cumpus1, cumpus_time1, xue_li2,biye_cumpus2,cumpus_time2,family, familys, age, work_address,zhi_cheng,family_phone,fujia,qing_gan,qing_gan2]

                            # list_line.append(row)

                            sheet.append(row)

                    except Exception as error:

                            # 捕获异常,也可以用log写到日志里方便查看和管理

                            print(error)

                            continue

# sheet.append(name_list) 

wb.save(r'E:\data\应聘登记表\别名.xlsx')   

可视化结果:


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355