利用 Python 找出適合你的國考市考公務員崗位

pythondict發表於2020-05-14

很多小夥伴都在考慮是否要報公務員,但是卻不知道適合自己的崗位有什麼,今天我們就來利用Python找出適合你的崗位吧!

根據2019年國考全國職位表,可以找到以下的報考限制因素:專業、學歷、政治面貌、基層工作年限。該表的下載地址:

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實用寶典

原文來自Python實用寶典:Python 公務員國考崗位

本作品採用《CC 協議》,轉載必須註明作者和本文連結

Python實用寶典, pythondict.com

相關文章