2020年国考已经临近啦,很多小伙伴都在考虑是否要报公务员,但是却不知道适合自己的岗位有什么,今天我们就来利用Python找出适合你的岗位吧!

根据2019年国考全国职位表,可以找到以下的报考限制因素:专业、学历、政治面貌、基层工作年限。该表的下载地址:

由于表格是Excel的xlsx格式,我们需要用到两个包,xlrd和xlwt,使用pip安装即可,如果你还没有安装Python和pip,请看这篇教程:安装Python. 在CMD/TERMINAL输入以下两条命令进行安装:

pip install xlrd
pip install xlwt

假设,假设我们是计算机本科专业,而且没有任何的基层工作经验,以这样的条件筛选表格中适合我们的岗位,(如果你没有耐心看,可以到网站上下载源代码直接用哦):

我们会使用xlrd读取表格,然后用xlwt保存筛选出来的数据,首先是xlrd读取:

data = xlrd.open_workbook(file) 
# 将表格数据读取到data中

然后我们需要一个变量保存筛选数据:

output = xlwt.Workbook(encoding='utf-8')

该表格中还有许多子表格,因此我们需要遍历所有的子表格:

for sheet in data.sheets():
    output_sheet = output.add_sheet(sheet.name)
    # 筛选出来的文件中也添加这些子表格

添加第二行的列信息:

for col in range(sheet.ncols):
    # 添加第二行的列信息
    output_sheet.row(0).write(col, sheet.cell(1,col).value)

接下来是检测文件中的每一行,判断其是否能够满足我们的三个条件:专业、学历、基层限制,由于不好分批展示,这里直接给出全部源代码,大家看注释就应该能看明白了,是一个使用关键词匹配对应表格的方法:

# 完整源代码
# Python实用宝典 2019-09-23
#-*- coding: utf-8 -*-

import xlrd
import xlwt
import re

# 检查是否满足报考条件
def check(row_value, major, edu, year):
    ma = row_value[12]
    # 该岗位所需专业
    ed = row_value[13]
    # 该岗位所需学历
    value = row_value[16]
    # 该岗位所需年限
    if check_major(ma, major) and check_edu(ed, edu) and checkSpecial(value, year):
        return True
    else:
        return False

def check_major(value, major):
    # 检查是否满足专业要求
    pat = re.compile(major)
    if re.search(pat, value):
        return True
    return False

# 检查是否满足学历要求
def check_edu(value, edu):
    pat = re.compile(edu)
    if re.search(pat, value):
        return True
    return False

# 检查基层年限设置
def checkSpecial(value, year):
    pat = re.compile(year)
    if re.search(pat, value):
        return True
    return False

# 根据条件筛选出职位
def filterTitle(file, major, edu, year):
    data = xlrd.open_workbook(file)
    # 将表格数据读取到data中
    output = xlwt.Workbook(encoding='utf-8')
    for sheet in data.sheets():
        output_sheet = output.add_sheet(sheet.name)
        # 筛选出来的文件中也添加这些子表格
        for col in range(sheet.ncols):
            # 添加第二行的列信息
            output_sheet.row(0).write(col, sheet.cell(1,col).value)

        output_row = 1
        for row in range(sheet.nrows):
            # 每一行都检测
            row_value = sheet.row_values(row)

            choosed = check(row_value, major, edu, year)
            # 是否满足三个条件(专业、学历、基层限制)

            if choosed == True:
                # 满足则输出到文件中
                for col in range(sheet.ncols):
                    output_sheet.row(output_row).write(col, sheet.cell(row, col).value)
                output_sheet.flush_row_data()
                output_row += 1
    output.save('output.xls')

if __name__ == '__main__':
    filterTitle('1.xlsx', u'不限|计算机', u'本科', u'无限制')

运行完毕后能在本地找到一个output.xls的文件,里面就是我们筛选出来的所有岗位,可以看到本科计算机能报中央国家党群机关和本级中央行政机关的的岗位比较少,但是国家行政机关省级以下直属岗位非常多,高达901个。事业单位355个。

大家也可以再修改源代码添加城市限制,比如说你希望在广东省工作,那就可以把check函数改成这样:

def check(row_value, major, edu, year, location):
    ma = row_value[12]
    # 该岗位所需专业
    ed = row_value[13]
    # 该岗位所需学历
    value = row_value[16]
    # 该岗位所需年限
    loc= row_value[1]
    # 该岗位位置
    if check_re(ma, major) and check_re(ed, edu) and check_re(value, year) and check_re(loc , location):
        return True
    else:
        return False

然后查看原表格里第二列的值,你会发现大部分国家公务员都是以省为单位的,比如XX广东省科员,那么调用该函数的时候就加一个’广东’参数即可。

我们的文章到此就结束啦,如果你希望我们今天的Python 教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦有任何问题都可以在下方留言区留言,我们都会耐心解答的!


​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。