prs_server/utils/re_to_jianli.py
2022-09-08 19:19:12 +08:00

1243 lines
63 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/python
# coding:utf-8
from LAC import LAC
import re, os
import copy
import pdfplumber
from win32com import client as wc
lac = LAC(mode='lac')
def Translate(input, output):
# 转换
wordapp = wc.Dispatch('Word.Application')
doc = wordapp.Documents.Open(input)
# 为了让python可以在后续操作中r方式读取txt和不产生乱码参数为4
doc.SaveAs(output, 4)
doc.Close()
def getText_pdf(filename):
"""将pdf读成text"""
with pdfplumber.open(filename) as pdf_file:
content = ''
for i in range(len(pdf_file.pages)):
page_text = pdf_file.pages[i]
page_content = page_text.extract_text()
if page_content:
content = content + page_content + "\n"
return content
def fmt_txt(chk_str):
true_chkStr = chk_str
regex = re.compile(r"\n*")
regex1 = re.compile(r":\n*")
true_chkStr = regex.sub('', true_chkStr)
true_chkStr = regex1.sub(':', true_chkStr)
dict_chk = {
"interview_name": "",
"interview_type": 1,
"interview_sign": 0,
"hope_money": "",
"feedback": 0,
"interview_round": 0,
"name": "",
"phone": "",
"job_name": "",
"hr_name": "",
"work_exp": 0,
"interview_stage": 0,
"owner_name": 2,
"education": 1,
"work_undergo": [],
"project_undergo": [],
"work_list": [],
"school": "",
"at_school": "",
"specialty": "",
"specialty_do": [],
"mmended_state": 0,
"mail": "",
"account": "",
"id_card": "",
"gender": "",
"age": 0,
"gam": "",
"interview_state": 1,
"counts": 1,
"nation": "",
"review": "",
"upgrade": [],
"come_time": "",
"now_money": "",
"men_state": 1,
"teacher_state": 1,
"teacher_back": 1,
"offer_state": 1,
"offer_exam_state": 1,
"notice_state": 1,
"pass_why": 0,
"pass_text": "",
"file_url": '',
"now_address": '',
"birthday": '',
}
# 姓名
chk_name = r'[赵|钱|孙|李|周|吴|郑|王|冯|陈|褚|卫|蒋|沈|韩|杨|朱|秦|尤|许|何|吕|施|张|孔|曹|严|华|金|魏|陶|姜|戚|谢|邹|喻|柏|水|窦|章|云|苏|潘|葛|奚|范|彭|郎|鲁|韦|昌|马|苗|凤|花|方|俞|任|袁|柳|酆|鲍|史|唐|费|廉|岑|薛|雷|贺|倪|汤|滕|殷|罗|毕|郝|邬|安|常|乐|于|时|傅|皮|卞|齐|康|伍|余|元|卜|顾|孟|平|黄|和|穆|萧|尹|姚|邵|湛|汪|祁|毛|禹|狄|米|贝|明|臧|计|伏|成|戴|谈|宋|茅|庞|熊|纪|舒|屈|项|祝|董|梁|杜|阮|蓝|闵|席|季|麻|强|贾|路|娄|危|江|童|颜|郭|梅|盛|林|刁|锺|徐|邱|骆|高|夏|蔡|田|樊|胡|凌|霍|虞|万|支|柯|昝|管|卢|莫|经|房|裘|缪|干|解|应|宗|丁|宣|贲|邓|郁|单|杭|洪|包|诸|左|石|崔|吉|钮|龚|程|嵇|邢|滑|裴|陆|荣|翁|荀|羊|於|惠|甄|麴|家|封|芮|羿|储|靳|汲|邴|糜|松|井|段|富|巫|乌|焦|巴|弓|牧|隗|山|谷|车|侯|宓|蓬|全|郗|班|仰|秋|仲|伊|宫|宁|仇|栾|暴|甘|钭|历|戎|祖|武|符|刘|景|詹|束|龙|叶|幸|司|韶|郜|黎|溥|印|宿|白|怀|蒲|邰|从|鄂|索|咸|籍|卓|蔺|屠|蒙|池|乔|阳|郁|胥|能|苍|双|闻|莘|党|翟|谭|贡|劳|逄|姬|申|扶|堵|冉|宰|郦|雍|却|桑|桂|濮|牛|寿|通|边|扈|燕|冀|浦|尚|农|温|别|庄|晏|柴|瞿|充|慕|连|茹|习|宦|艾|鱼|容|向|古|易|慎|戈|廖|庾|终|暨|居|衡|步|都|耿|满|弘|匡|国|文|寇|广|禄|阙|东|欧|沃|利|蔚|越|夔|隆|师|巩|厍|聂|晁|勾|敖|融|冷|訾|辛|阚|那|简|饶|空|曾|毋|沙|乜|养|鞠|须|丰|巢|关|蒯|相|荆|红|游|竺|权|司马|上官|欧阳|夏侯|诸葛|闻人|东方|赫连|皇甫|尉迟|公羊|澹台|公冶宗政|濮阳|淳于|单于|太叔|申屠|公孙|仲孙|轩辕|令狐|钟离|宇文|长孙|慕容|司徒|司空|召|有|舜|岳|黄辰|寸|贰|皇|侨|彤|竭|端|赫|实|甫|集|象|翠|狂|辟|典|良|函|芒|苦|其|京|中|夕|乌孙|完颜|富察|费莫|蹇|称|诺|来|多|繁|戊|朴|回|毓|鉏|税|荤|靖|绪|愈|硕|牢|买|但|巧|枚|撒|泰|秘|亥|绍|以|壬|森|斋|释|奕|姒|朋|求|羽|用|占|真|穰|翦|闾|漆|贵|代|贯|旁|崇|栋|告|休|褒|谏|锐|皋|闳|在|歧|禾|示|是|委|钊|频|嬴|呼|大|威|昂|律|冒|保|系|抄|定|化|莱|校|么|抗|祢|綦|悟|宏|功|庚|务|敏|捷|拱|兆|丑|丙|畅|苟|随|类|卯|俟|友|答|乙|允|甲|留|尾|佼|玄|乘|裔|延|植|环|矫|赛|昔|侍|度|旷|遇|偶|前|由|咎|塞|敛|受|泷|袭|衅|叔|圣|御|夫|仆|镇|藩|邸|府|掌|首|员|焉|戏|可|智|尔|凭|悉|进|笃|厚|仁|业|肇|资|合|仍|九|衷|哀|刑|俎|仵|圭|夷|徭|蛮|汗|孛|乾|帖|罕|洛|淦|洋|邶|郸|郯|邗|邛|剑|虢|隋|蒿|茆|菅|苌|树|桐|锁|钟|机|盘|铎|斛|玉|线|针|箕|庹|绳|磨|蒉|瓮|弭|刀|疏|牵|浑|恽|势|世|仝|同|蚁|止|戢|睢|冼|种|涂|肖|己|泣|潜|卷|脱|谬|蹉|赧|浮|顿|说|次|错|念|夙|斯|完|丹|表|聊|源|姓|吾|寻|展|出|不|户|闭|才|无|书|学|愚|本|性|雪|霜|烟|寒|少|字|桥|板|斐|独|千|诗|嘉|扬|善|揭|祈|析|赤|紫|青|柔|刚|奇|拜|佛|陀|弥|阿|素|长|僧|隐|仙|隽|宇|祭|酒|淡|塔|琦|闪|始|星|南|天|接|波|碧|速|禚|腾|潮|镜|似|澄|潭|謇|纵|渠|奈|风|春|濯|沐|茂|英|兰|檀|藤|枝|检|生|折|登|驹|骑|貊|虎|肥|鹿|雀|野|禽|飞|节|宜|鲜|粟|栗|豆|帛|官|布|衣|藏|宝|钞|银|门|盈|庆|喜|及|普|建|营|巨|望|希|道|载|声|漫|犁|力|贸|勤|革|改|兴|亓|睦|修|信|闽|北|守|坚|勇|汉|练|尉|士|旅|五|令|将|旗|军|行|奉|敬|恭|仪|母|堂|丘|义|礼|慈|孝|理|伦|卿|问|永|辉|位|让|尧|依|犹|介|承|市|所|苑|杞|剧|第|零|谌|招|续|达|忻|六|鄞|战|迟|候|宛|励|粘|萨|邝|覃|辜|初|楼|城|区|局|台|原|考|妫|纳|泉|老|清|德|卑|过|麦|曲|竹|百|福|言|第五|佟|爱|年|笪|谯|哈|墨|连|南宫|赏|伯|佴|佘|牟|商|西门|东门|左丘|梁丘|琴|后|况|亢|缑|帅|微生|羊舌|海|归|呼延|南门|东郭|百里|钦|鄢|汝|法|闫|楚|晋|谷梁|宰父|夹谷|拓跋|壤驷|乐正|漆雕|公西|巫马|端木|颛孙|子车|督|仉|司寇|亓官|三小|鲜于|锺离|盖|逯|库|郏|逢|阴|薄|厉|稽|闾丘|公良|段干|开|光|操|瑞|眭|泥|运|摩|伟|铁|迮][\u4e00-\u9fa5]{1,2}'
name = re.findall(chk_name, true_chkStr, re.M)
if name:
name_txt = ','.join(name)
rank_result = lac.run(name_txt)
for index, i in enumerate(rank_result[1]):
if i == 'PER':
dict_chk['name'] = rank_result[0][index]
break
# 性别
gender = re.findall(r'男|女', true_chkStr, re.M)
if gender:
dict_chk['gender'] = gender[0]
# 电话
phone = re.findall(r"(?<=\D)1\d{10}", true_chkStr, re.M)
if phone:
dict_chk['phone'] = phone[0]
# 邮箱
email = re.findall(r'[0-9a-zA-Z.]+@[0-9a-zA-Z.]+?com', true_chkStr, re.M)
if email:
dict_chk['mail'] = email[0]
else:
email1 = re.findall(r'<[a-zA-Z]+\s[a-zA-Z]+>\s[0-9a-zA-Z.]+@[0-9a-zA-Z.]+?org', true_chkStr, re.M) # mail
if email1:
dict_chk['mail'] = email1[0]
# 应聘职位
job = re.findall(r'职位.*?\n', true_chkStr, re.M)
if job:
job_str = job[0]
if '/' in job_str:
job_list = job_str.split('/')
job_str = job_list[0]
job_name = job_str.split('')[-1]
job_name = job_name.replace('\n', '')
job_name.strip()
dict_chk['job_name'] = job_name
# 学历
education_list = ['大专', '本科', '博士', '硕士']
for education in education_list:
if education in true_chkStr:
dict_chk['education'] = education
break
# 工作经历
work_exp = re.findall(r'.*?工作经验.*?\n', true_chkStr, re.M)
if work_exp:
work_exp_str = work_exp[0].replace('\n', '')
if '|' in work_exp_str:
work_exp_list = work_exp_str.split('|')
else:
work_exp_list = work_exp_str.split(' ')
for i in work_exp_list:
if '工作经验' in i:
true_work_exp_str = i.strip().replace('?', '')
dict_chk['work_exp'] = int(true_work_exp_str.split('年工作经验')[0])
break
else:
work_exp = re.findall(r'.*?工作年限.*?\n', true_chkStr, re.M) # 工作经验
if work_exp:
work_exp_str = work_exp[0].replace('\n', '')
if '' in work_exp_str:
dict_chk['work_exp'] = int(work_exp_str.split('')[-1].strip().split('')[0])
else:
dict_chk['work_exp'] = 0
# 毕业学校, 专业, 毕业时间, 学历
school = re.findall(r'.*?学院.*?\n', true_chkStr, re.M)
if school:
school_str = school[0].replace('\n', '').strip()
if ' ' in school_str:
school_list = school_str.split(' ')
else:
school_list = [school_str]
else:
school = re.findall(r'.*?大学.*?\n', true_chkStr, re.M)
if school:
school_str = school[0].replace('\n', '').strip()
if '' in school_str:
school_list = school_str.split('')
else:
school_list = [school_str]
else:
school_list = []
if len(school_list) <= 1:
new_chk_str = true_chkStr.split('教育经历')[-1]
if new_chk_str:
bold = re.compile(r'\n')
true_chk = bold.sub(' ', new_chk_str, count=3)
school_str1 = re.findall(r'.*?学院.*?\n', true_chk, re.M)[0].replace('\n', '')
school_list = school_str1.split(' ')
if school_list:
time_index = -1
for index, i in enumerate(school_list):
chk_i = i.strip()
if chk_i in ['/', '|']:
continue
if time_index != -1 and index <= time_index:
continue
if '学院' in chk_i or '大学' in chk_i:
dict_chk['school'] = chk_i.strip().replace('?', '')
continue
if chk_i.replace('?', '').strip() in education_list:
dict_chk['education'] = chk_i.replace('?', '').strip()
continue
# 包含数字
if bool(re.search(r'\d', chk_i)):
if '-' in chk_i:
dict_chk['at_school'] = chk_i
time_index = index
continue
if '' in chk_i:
continue
time_index = index + 2
dict_chk['at_school'] = (school_list[index] + school_list[index + 1] + school_list[index + 2]).replace(
'.', '/')
continue
if chk_i:
dict_chk['specialty'] = chk_i.replace('?', '').strip()
continue
else:
dict_chk.update({
'school': '',
'graduate_time': '',
'at_school': '',
'specialty': '',
})
if dict_chk.get('at_school', ''):
dict_chk['graduate_time'] = dict_chk['at_school'].split('-')[-1].strip()
# 期望薪资
hope_money = re.findall(r'.*?薪资.*?\n', true_chkStr, re.M)
if hope_money:
hope_list = hope_money[0].split('薪资:')
dict_chk['hope_money'] = hope_list[-1].replace('\n', '').strip()
else:
dict_chk['hope_money'] = ''
# 身份证号r"[1-9]\d{5}(?:18|19|(?:[23]\d))\d{2}(?:(?:0[1-9])|(?:10|11|12))(?:(?:[0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]"
# ^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$
# ^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$
id_card = re.findall(
r"[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]", true_chkStr,
re.M)
if id_card:
dict_chk['id_card'] = id_card[0]
else:
dict_chk['hope_money'] = ''
# 所在地
account = re.findall(r'.*?地:.*?\n', true_chkStr, re.M)
if account:
account_str = account[0]
if '|' in account_str:
account_list = account_str.split('|')
dict_chk['account'] = account_list[0].split('')[-1].strip('\n')
dict_chk['accounts'] = account_list[1].split('')[-1].strip('\n')
else:
dict_chk['account'] = account_str.split('')[-1].strip('\n')
dict_chk['accounts'] = ''
else:
dict_chk.update({
'account': '',
'accounts': ''
})
# 年龄
age = re.findall(r'.*?龄:.*?\n', true_chkStr, re.M)
if age:
age_str = age[0].replace(' ', '').replace('\n', '')
dict_chk['age'] = int(age_str.split('')[-1])
else:
age1 = re.findall(r'[0-9]{2}.*?岁', true_chkStr, re.M)
if age1:
age1_s = age1[0].replace(' ', '')
dict_chk['age'] = int(age1_s.split('')[0])
else:
dict_chk['age'] = 20
# 民族
nation = re.findall(r'.*?族:.*?\n', true_chkStr, re.M)
if nation:
nation_str = nation[0].replace(' ', '').replace('\n', '')
dict_chk['nation'] = int(nation_str.split('')[-1])
else:
dict_chk['nation'] = ''
if '工作经历' not in true_chkStr:
work_undergo_str = true_chkStr.split('工作经验')[-1]
else:
work_undergo_str = true_chkStr.split('工作经历')[-1]
work_undergo_str1 = work_undergo_str.split('教育经历')[0]
work_str2 = work_undergo_str1.strip().strip('\n')
project_undergo = ''
if '项目经历' in work_str2:
project_undergo = work_str2.split('项目经历')[1]
work_str2 = work_str2.split('项目经历')[0]
else:
if '项目名称' in work_str2:
project_undergo = ''.join(i for i in work_str2.split('项目名称')[1:])
work_str2 = work_str2.split('项目名称')[0]
project_undergo2 = project_undergo.strip().strip('\n')
str_2 = re.split('([0-9]{4}[/|.][0-9]{1,2})', work_str2)
project_list = re.split('([0-9]{4}[/|.][0-9]{1,2})', project_undergo2)
work_list = []
project_undergo_list = []
if project_list[0] == '':
project_list = project_list[1:]
# 数字开头
if project_list[0][0].isdigit():
index2 = -1
new_str_list1 = []
for index, i in enumerate(project_list):
if index <= index2:
continue
if not i:
continue
if i.strip() == '-':
index2 = index + 2
new_str = project_list[index - 1] + i + project_list[index + 1] + project_list[index + 2]
new_str_list1.append(new_str)
continue
if i.strip() != '-' and '-' in i:
index2 = index
new_str = project_list[index - 1] + i
new_str_list1.append(new_str)
continue
if new_str_list1:
for project_str in new_str_list1:
project_name_time_str = project_str.split('\n')[0]
dict_project = {
'name': '',
'time': '',
'comment': '',
'work': '',
'duty': '',
}
project_name_time_str2 = re.split('([0-9]{4}[/|.][0-9]{1,2})', project_name_time_str)
if project_name_time_str2:
for index, p_str in enumerate(project_name_time_str2):
if not p_str:
continue
if p_str[0].isdigit():
dict_project['time'] = (p_str + project_name_time_str2[index + 1] + project_name_time_str2[
index + 2]).replace('.', '/')
dict_project['name'] = project_name_time_str2[index + 3]
break
project_chk_str2 = project_str.split(project_name_time_str)[-1]
project_chk_str2_list = re.split('(:|)', project_chk_str2)
if project_chk_str2_list:
index3 = -1
start_name = ''
new_p_chk_list = []
for index, p_str3 in enumerate(project_chk_str2_list):
if index <= index3:
continue
if p_str3 in [':', '']:
if not re.split('[\n|\t]', project_chk_str2_list[index + 1])[0].strip() and len(
project_chk_str2_list[index + 1]) <= 5:
continue
start_name = project_chk_str2_list[index + 1].split('\n')[-1]
if start_name:
new_p_str = project_chk_str2_list[index - 1].split('\n')[-1] + p_str3 + \
project_chk_str2_list[index + 1].split(start_name)[0]
else:
new_p_str = project_chk_str2_list[index - 1].split('\n')[-1] + p_str3 + \
project_chk_str2_list[index + 1]
new_p_chk_list.append(new_p_str)
if new_p_chk_list:
for p_str_true in new_p_chk_list:
if '开发环境' in p_str_true or '开发工具' in p_str_true or '开发技术' in p_str_true or '模块' in p_str_true:
dict_project['work'] += re.split('[:|]', p_str_true)[-1]
continue
if '项目描述' in p_str_true or '功能介绍' in p_str_true:
dict_project['comment'] += re.split('[:|]', p_str_true)[-1]
continue
if '职责' in p_str_true:
dict_project['duty'] += re.split('[:|]', p_str_true)[-1]
continue
project_undergo_list.append(dict_project)
# 项目名开头
else:
if project_undergo2.startswith(':') or project_undergo2.startswith(''):
dict_project = {
'name': '',
'time': '',
'comment': '',
'work': '',
'duty': '',
}
new_str_list1 = []
index2 = -1
for index, i in enumerate(project_list):
if not i[0].isdigit() and i != '-':
if index <= index2:
continue
index2 = index + 3
if len(project_list) < index2 + 1:
break
else:
new_str = i + project_list[index + 1] + project_list[index + 2] + project_list[index + 3]
new_str_list1.append(new_str)
if new_str_list1:
for project_chk_str2 in new_str_list1:
project_chk_str2_list = re.split('(:|)', project_chk_str2)
if project_chk_str2_list:
index3 = -1
new_p_chk_list = []
for index, p_str3 in enumerate(project_chk_str2_list):
if index <= index3:
continue
if p_str3 in [':', '']:
if not re.split('[\n|\t]', project_chk_str2_list[index + 1])[0].strip() and len(
project_chk_str2_list[index + 1]) <= 10:
continue
start_name = project_chk_str2_list[index + 1].split('\n')[-1]
if start_name:
new_p_str = project_chk_str2_list[index - 1].split('\n')[-1] + p_str3 + \
project_chk_str2_list[index + 1].split(start_name)[0]
else:
new_p_str = project_chk_str2_list[index - 1].split('\n')[-1] + p_str3 + \
project_chk_str2_list[index + 1]
new_p_chk_list.append(new_p_str)
if new_p_chk_list:
dict_project['name'] = re.split('[:|]', new_p_chk_list[0])[-1]
for p_str_true in new_p_chk_list:
if '开发环境' in p_str_true or '开发工具' in p_str_true or '开发技术' in p_str_true or '模块' in p_str_true:
dict_project['work'] += re.split('[:|]', p_str_true)[-1]
continue
if '项目描述' in p_str_true or '功能介绍' in p_str_true:
dict_project['comment'] += re.split('[:|]', p_str_true)[-1]
continue
if '职责' in p_str_true:
dict_project['duty'] += re.split('[:|]', p_str_true)[-1]
continue
project_undergo_list.append(dict_project)
else:
index2 = -1
name2 = ''
new_str_list1 = []
for index, i in enumerate(project_list):
if index <= index2:
continue
if not i:
continue
if i.strip() == '-':
index2 = index + 2
if not name2:
name3 = project_list[index + 2].split('\n')[-1]
new_str = project_list[index - 2] + project_list[index - 1] + i + project_list[index + 1] + \
project_list[index + 2].split(name3)[0]
name2 = name3
else:
name3 = project_list[index + 2].split('\n')[-1]
if name2:
new_str = name2 + project_list[index - 1] + i + project_list[index + 1] + \
project_list[index + 2].split(name3)[0]
else:
new_str = name2 + project_list[index - 1] + i + project_list[index + 1] + \
project_list[index + 2]
name2 = name3
new_str_list1.append(new_str)
continue
if i.strip() != '-' and '-' in i:
index2 = index
if not name2:
name3 = i.split('\n')[-1]
new_str = str_2[index - 2] + str_2[index - 1] + i.split(name3)[0]
name2 = name3
else:
name3 = i.split('\n')[-1]
new_str = str_2[index - 2] + str_2[index - 1] + i.split(name3)[0]
name2 = name3
new_str_list1.append(new_str)
continue
if new_str_list1:
for project_str in new_str_list1:
project_name_time_str = project_str.split('\n')[0]
dict_project = {
'name': '',
'time': '',
'comment': '',
'work': '',
'duty': '',
}
project_name_time_str2 = re.split('([0-9]{4}[/|.][0-9]{1,2})', project_name_time_str)
if project_name_time_str2:
for index, p_str in enumerate(project_name_time_str2):
if not p_str:
continue
if p_str[0].isdigit():
dict_project['time'] = (
p_str + project_name_time_str2[index + 1] + project_name_time_str2[
index + 2]).replace('.', '/')
dict_project['name'] = project_name_time_str2[index - 1]
break
project_chk_str2 = project_str.split(project_name_time_str)[-1]
project_chk_str2_list = re.split('(:|)', project_chk_str2)
if project_chk_str2_list:
index3 = -1
start_name = ''
new_p_chk_list = []
for index, p_str3 in enumerate(project_chk_str2_list):
if index <= index3:
continue
if p_str3 in [':', '']:
if not re.split('[\n|\t]', project_chk_str2_list[index + 1])[0].strip() and len(
project_chk_str2_list[index + 1]) <= 10:
continue
start_name = project_chk_str2_list[index + 1].split('\n')[-1]
if start_name:
new_p_str = project_chk_str2_list[index - 1].split('\n')[-1] + p_str3 + \
project_chk_str2_list[index + 1].split(start_name)[0]
else:
new_p_str = project_chk_str2_list[index - 1].split('\n')[-1] + p_str3 + \
project_chk_str2_list[index + 1]
new_p_chk_list.append(new_p_str)
if new_p_chk_list:
for p_str_true in new_p_chk_list:
if '开发环境' in p_str_true or '开发工具' in p_str_true or '开发技术' in p_str_true or '模块' in p_str_true:
dict_project['work'] += re.split('[:|]', p_str_true)[-1]
continue
if '项目描述' in p_str_true or '功能介绍' in p_str_true:
dict_project['comment'] += re.split('[:|]', p_str_true)[-1]
continue
if '职责' in p_str_true:
dict_project['duty'] += re.split('[:|]', p_str_true)[-1]
continue
project_undergo_list.append(dict_project)
dict_chk['project_undergo'] = project_undergo_list
# 数字开头
if work_str2[0].isdigit():
index1 = -1
new_str_list = []
for index, i in enumerate(str_2):
if index <= index1:
continue
if not i:
continue
if i.strip() == '-':
index1 = index + 2
new_str = str_2[index - 1] + i + str_2[index + 1] + str_2[index + 2]
new_str_list.append(new_str)
continue
if i.strip() != '-' and '-' in i:
index1 = index
new_str = str_2[index - 1] + i
new_str_list.append(new_str)
continue
if new_str_list:
dict_chk['work_undergo'] = new_str_list
for work_str in new_str_list:
new_str_list1 = work_str.split('工作描述')
work_dict = {
'company_name': '',
'time': '',
'position_name': '',
'duty': new_str_list1[-1],
}
new_str_list2 = new_str_list1[0].split('\n')
if '?' in new_str_list1[0]:
work_dict['time'] = new_str_list2[0].split('??')[0].replace('.', '/')
work_dict['company_name'] = new_str_list2[0].split('??')[1]
work_dict['position_name'] = new_str_list2[1].split('|')[0]
else:
work_dict['time'] = new_str_list2[0].split(' ')[0].replace('.', '/')
work_dict['company_name'] = new_str_list2[0].split(' ')[1]
work_dict['position_name'] = new_str_list2[1].split('|')[0]
work_list.append(work_dict)
# 公司名开头
else:
index1 = -1
name = ''
new_str_list = []
for index, i in enumerate(str_2):
if index <= index1:
continue
if not i:
continue
if i.strip() == '-':
index1 = index + 2
if not name:
name1 = str_2[index + 2].split('\n')[-1]
new_str = str_2[index - 2] + str_2[index - 1] + i + str_2[index + 1] + \
str_2[index + 2].split(name1)[0]
name = name1
else:
name1 = str_2[index + 2].split('\n')[-1]
if name1:
new_str = name + str_2[index - 1] + i + str_2[index + 1] + str_2[index + 2].split(name1)[0]
else:
new_str = name + str_2[index - 1] + i + str_2[index + 1] + str_2[index + 2]
name = name1
new_str_list.append(new_str)
continue
if i.strip() != '-' and '-' in i:
index1 = index
if not name:
name1 = i.split('\n')[-1]
new_str = str_2[index - 2] + str_2[index - 1] + i.split(name1)[0]
name = name1
else:
name1 = i.split('\n')[-1]
new_str = str_2[index - 2] + str_2[index - 1] + i.split(name1)[0]
name = name1
new_str_list.append(new_str)
continue
if new_str_list:
dict_chk['work_undergo'] = new_str_list
for work_str in new_str_list:
new_str_list1 = work_str.split('\n')
work_dict = {
'company_name': '',
'time': '',
'position_name': '',
'duty': '',
}
new_str_list2 = new_str_list1[0].split(' ', 1)
work_dict['company_name'] = new_str_list2[0]
work_dict['time'] = new_str_list2[1]
work_dict['position_name'] = new_str_list1[1].split('')[-1]
work_duty = new_str_list1[3:]
duty1 = new_str_list1[2].split('职责')[-1]
duty = duty1.join((str(x) for x in work_duty))
work_dict['duty'] = duty
work_list.append(work_dict)
dict_chk['work_list'] = work_list
review = ''
upgrade = true_chkStr.split('教育经历')[-1]
if '自我评价' in upgrade or '自我描述' in upgrade:
if '自我评价' in upgrade:
review = upgrade.split('自我评价')[-1].split('技能特长')[0]
else:
if '自我描述' in upgrade:
review = upgrade.split('自我描述')[-1].split('技能特长')[0]
else:
review_chk = true_chkStr.split('工作经历')[0]
if '自我评价' in review_chk:
review = review_chk.split('自我评价')[-1]
if '自我描述' in review_chk:
review = review_chk.split('自我描述')[-1]
dict_chk['review'] = review
upgrade = upgrade.strip().strip('\n')
upgrade_chk_list = upgrade.split('\n')
upgrade_list = []
if upgrade_chk_list:
for index, i in enumerate(upgrade_chk_list):
if index == 0:
if sum([1 if u'\u4e00' <= x <= u'\u9fff' else 0 for x in i]) <= 0:
upgrade_list.append(i + upgrade_chk_list[index + 1] + upgrade_chk_list[index + 2])
break
else:
upgrade_list.append(i)
break
dict_chk['upgrade'] = upgrade_list
specialty_do = []
language = []
remembrance = []
if '证书' in upgrade:
chk_upgrade_str1 = upgrade.split('证书')[-1]
if '专业技能' in chk_upgrade_str1:
specialty_do = chk_upgrade_str1.split('专业技能')[-1].strip().strip('\n').split('\n')
remembrance_list_str = chk_upgrade_str1.split('专业技能')[0].strip().strip('\n')
for i in remembrance_list_str.split('\n'):
if '??' in i:
dict_rem = {
"prize_name": i.split('??')[1],
"prize_time": i.split('??')[0]
}
else:
dict_rem = {
"prize_name": i.split(' ')[1],
"prize_time": i.split(' ')[0].replace('.', '/')
}
str_rem = copy.deepcopy(dict_rem)
remembrance.append(str_rem)
elif '语言能力' in chk_upgrade_str1:
remembrance_list_str = chk_upgrade_str1.split('语言能力')[0].strip().strip('\n')
for i in remembrance_list_str.split('\n'):
if '??' in i:
dict_rem = {
"prize_name": i.split('??')[1],
"prize_time": i.split('??')[0]
}
else:
dict_rem = {
"prize_name": re.split('([0-9]{4}.|/[0-9]{1,2})', i)[1],
"prize_time": re.split('([0-9]{4}.|/[0-9]{1,2})', i)[0].replace('.', '/')
}
str_rem = copy.deepcopy(dict_rem)
remembrance.append(str_rem)
language_list = chk_upgrade_str1.split('语言能力')[-1].strip().strip('\n')
language_dict = {
'language_name': '',
'has_sleep': '',
'reading': '',
'writing': ''
}
for i in language_list.split('/n'):
language_dict1 = copy.deepcopy(language_dict)
language_dict1['language_name'] = i.split('')[0]
for i1 in i.split('')[1].split('|'):
if '听说' in i1:
language_dict1['reading'] = i1
continue
if '读写' in i1:
language_dict1['writing'] = i1
language.append(language_dict1)
elif '培训经历' in chk_upgrade_str1:
remembrance_list_str = chk_upgrade_str1.split('培训经历')[0].strip().strip('\n')
remembrance_list_chk = remembrance_list_str.split('\n')
for index, i in enumerate(remembrance_list_chk):
if i[0].isdigit():
time = i
name = remembrance_list_chk[index + 1]
if '' in name:
for name1 in name.split(''):
dict_rem = {
"prize_name": name1,
"prize_time": time.replace('.', '/')
}
str_rem = copy.deepcopy(dict_rem)
remembrance.append(str_rem)
else:
remembrance.append({"prize_name": name, "prize_time": time})
dict_chk['remembrance'] = remembrance
dict_chk['specialty_do'] = specialty_do
dict_chk['language'] = language
return dict_chk
if __name__ == '__main__':
# 拉勾
chk_str1 = """
方明洋
5年工作经验 | 本科 | 27岁 | 男
期望职位: Android / 期望薪资17k-18k
联系电话: 13100622896
电子邮箱: 727527762@qq.com
自我描述
综合能力: 责任心
本人4年工作经验意向智能物联网方向喜欢钻研热爱技术。
工作经历
武汉中软国际科技服务有限公司 2018.03 - 至今
职位Android中级开发工程师
我任职于武汉中软国际华为业务线软件工具部。主要职责为开发华为相机自动化流水线测试防护系统。该系统
基于Jenkins结合Pythondosshell脚本自动化监控指定代码仓自动集成测试插件至工程源码
动编译安装静态代码检查unit测试Androidtest,monkey测试内存检测自动实时呈现版本测试
结果。实现应用层全流程自动化相较于人工测试效率提升300%,上线试运行四周,累计发现应用
crash,oom,anr,内存泄漏Javanative层各类问题总计90多处。后期准备推广至全apk业务流水线使
用。
武汉漫维智能科技有限公司 2017.09 - 2018.04
职位:安卓研发工程师
我任职于武汉漫维智能科技有限公司研发部工作职责为开发Honeypad系统该系统是面向家庭和商业级
的智能物联网平台分为餐桌系统和茶几系统两大块。Honeypad系统本质是替换Android原生
launcher通过自定义基类view并扩展出各个功能组件模块在此基础上插件化添加私有模块或者有条件
接入第三方平台来集成整合各种资源,其中智能茶几系统包括自己开发天气模块,新闻模块,亲自互动模块,
定制桌面小游戏 第三方影视音乐APP市场等。智能餐桌系统包括:第三方点餐,小游戏等。 通过后台
socket主动推送配置文件控制两子种系统切功能切换。
1.负责项目基础框架搭建; 2.项目功能模块代码编辑; 3.代码粗测试; 4.版本维护迭代。
广州中道电子科技有限公司 2015.11 - 2017.09
职位android应用开发工程师
我任职于广州中道电子科技有限公司。工作职责为开发中道进销存系统Android客户端应用。该系统主要
用于管理商户进货销售存储。
工作描述: 1.开发中道批发APP各模块功能 2.开发中道批发后台服务端功能模块; 3. Android客户端粗
测。4.客户端功能迭代开发5开发蓝牙打印插件。
项目经历
漫维智能餐桌 2017.10 - 2018.03
项目描述:
开发环境:Windows
开发工具:AndroidstudioMySQLAndroidtools ,固件工厂,
项目名称:Honeylauncher
项目描述:漫维智能餐桌/茶几HoneyPAD致力于打造基于互联网技术的高端智能平台 提供以智能餐桌,
智能茶几,广告交互机为主体的一站式商业解决方案。
1.漫维智能餐桌/茶几系统是基于honeylauncher平台honeylauncher实质为Android launcher替换系统
开机launcher该框架采用HTTP2.0通信协议,保证通信安全,同时也可以在服务端主动像客户端推送信息
或者跟新版本。
2.项目主页分为三四大区域,天气新闻插件区,主功能区,我的功能,快捷管理,
你的成就:
项目框架开发功能代码实现
中道打印插件(蓝牙打印机) 2017.05 - 2017.07
项目描述:
软件环境Windows
开发工具Eclipse
责任描述:
1.项目基础框架,实现功能流程图;
2.功能模块编码UI界面
3.测试项目代码,兼容测试;
项目简介中道打印插件手机app蓝牙连接打印机基础插件服务在手机app需要打印功能时候调用该
插件服务,搜寻范围内可用的蓝牙设备,标识当前所有已搜寻到的蓝牙设备状态并分类显示;点击设备列表弹
框提示绑定设备连接设备成功后调用系统打印api 插件置打印中设置默认打印属性以及预设打印属性;连
接打印设备后预览打印页面生成pdf文件传送至打印设备并设置打印命令更改打印动作
1.该插件可以匹配所有可搜索的蓝牙设备;
2.该插件适配所有支持蓝牙功能的打印机(无需下载官方打印插件);
3.该打印插件实质上实现系统的打印接口,重写自己需要的方法;
你的成就:
app开发
中道批发 2016.11 - 2017.04
项目描述:
项目简介软件环境windows
开发工具Eclipse NetBeans MySql 5.0NavicatForMySQl
项目简介:
中道批发是一款适用于中小企业商铺的进销存管理软件,该系统拥有完整的店铺销售管理权限体系,订单
流程控制跟踪体系,商品进货,销售,存储管理信息体系;从客户下单到产品生产完毕交货整个流程的控制,
管理并兼容各种不同终端平板手机该项目通信基于PPP+TLV报文协议8组RESKey加密报文传
输。同时对于服务端拓展性更强,适用于多种数据库;
责任描述:
1.1.客户端编写项目下单模块款式生产计划工厂订单工厂订单跟踪我的模块中APP更新切换云主
机与指定i地址模块
2.服务端 编写各个项目功能模块中Action类解析通信报文以及操作数据库生成响应数据到客户端
3.服务端代码测试客户模块化各个功能作为lib库加入到主项目中去解耦项目各个模块便于后期维
护;
4.客户端功能代码压力测试逻辑测试UI测试IO测试1.店铺下单模块功能;
5.总部款式生产计划模块,工厂计划模块,采购任务指派,采购过程记录,裁床跟踪模块;
6.fragment中模块功能分类类似支付包分组功能界面
2.项目描述:
1.使用第三方stickyheaderlistview分类各fragment中功能模块。
2. 使用第三方ObservablescrollowView实现下拉弹性空间文字渐变。
3.使用XListview实现下拉刷新列表上拉加载更多。
4.自定义控件MyHorizontalScrollowView实现复杂表格横向纵向滑动解决小屏幕表格显示不全问题
5合并表格行
6.模块化项目功能;
7.自定义输入框InputDialog
8.服务端定义Action类处理客户端不同界面的不同数据库操作请求
9服务端service类定义各个对应模块中CRUD操作数据库方法
你的成就:
客户端app开发
焦点新闻 2016.08 - 2016.08
项目描述:
● 项目名称:焦点新闻
● 开发周期2015.04—2015.07
● 开发工具AndroidStudio2.0+SVN
● 项目描述:此项目为一个新闻资讯类手机客户端,主要包括以下几个模块首页、新闻,创意、家居、军 事、
娱乐等功能模块,用户可以自由订阅添加自己喜欢和关系的内容,使用起来非常方便。
● 1.项目基本框架 应用结构采用的是SlidingMenu开源框架整体分为侧滑菜单界面和内容界面两个部分。
内容界面采用ViewPager加上ViewPagerIndicator的设计模式。为了实现各个界面的统一管理抽取出一
个基类BasePager对外暴露initView()和initData()两个方法,供每个模块使用。这样每个模块只需要实现
这两个方法就可以了,从而达到代码的复用。
● 2.头条热点,读图的开发 ListView用于展示从网络上获取的数据并在ListView的头部添加一个可以轮播
的ViewPager热点新闻图片在ListView的尾部添加一个加载更多的布局。 界面采用
Fragment+ViewPager的框架模式自定义ViewPager的懒加载(去除预加载),当用 户切换ViewPager是
才进行数据请求,节约用户流量.
你的成就:
安卓端app开发
一元秒杀 2016.07 - 2016.07
项目描述:
● 项目描述:
天猫百里挑一,特惠商品折上折,每日精选最划算的天猫商品,正 品 给力不加价,选择我 们不
需要理由!!!分类齐全,数码, 女装,男 装,家居,母婴,鞋包,配饰等栏目,淘宝独家 商
品 优惠选择。
1.对项目进行分析,对视图层框架搭建,界面统一。主界面采用RadioGroup+ViewPager的设
计模式并且要自定义一个ViewPager重写ViewPager的事件处理机制让ViewPager不
能处理滑动事件通过点击RadioGroup来实现页面的切换。为了实现界面的统一管理
取一个基类BasePager对外暴露initView()和initData()两个方法,共每个模板使用。这样
每个模块只需要实现这两个方法就可以了,从而达到代码的复用。
2.主页、逛街、主题的开发 ListView用于展示从网络上获取的数据并在ListView的头部添
加一个布局文件,这个布局文件包括了信息显示的轮播图,分类信息男装、数码、创意等,这
样就可以达到让头布局和ListView进行联动的效果。在主页使用一个帧布局点击可以实现
ListView和GridView视图切换的效果。 3.在分类信息中,每个分类信息布局基本相同,通过
抽取一个布局文件通过include进入布局文 件的复用。
你的成就:
负责安卓端app开发任务
美食天下 2015.04 - 2015.07
项目描述:
● 软件环境windows
● 开发工具Androidstudio +svn
● 责任描述首页Tween Animation,
登录界面通过Json解析Xml实现登录服务器交互
我的个人界面
● 项目简介:全球美食精品荟萃,发掘各类美食菜谱,蒸煮焖烩炒煎炸,从家常菜到人气料
理,从正餐到甜点,从养生汤到减肥餐,搜集美食智慧,品评美食文化,体会美食乐趣。美食
菜谱,简单的名字,幸福的滋味!海量不同菜系菜谱,满足您的个性化需求!
你的成就:
通信模块编码
教育经历
汉口学院 本科 / 电子信息工程 2011 - 2015
"""
# 前程无忧
chk_str2 = """
基本信息
李立宏
男 | 30 岁 (1990/01/12) | 174cm
未婚 | 9年工作经验
手机号码15827401448
QQ号761193190
求职状态:目前正在找工作
邮箱hong199012@qq.com
居住地:武汉-洪山区
工作经验
2017/3―至今 [3年6个月]
C++服务器主程 | 研发
武汉多游科技有限公司
网络游戏 | 民营公司 | 50-150人
工作描述:
1.独立负责棋牌游戏 “黔友贵州麻将”的研发,上线及运营,更新
2.帮助客户端搭建底层跨平台通讯库
3.配合管理后台开发人员建表并生成数据,提升运营能力
4.服务器采用windows下c++开发使用mssql Server 数据库客户端采用cocos lua
5.游戏每日最大3千多人同时在线在线运营时间两年多非常稳定
6.移植服务器到linux下稳定运营数据库用mysql, linux下使用qt
7.精通cocos2dx c++开发完整的cocos开发上线经验。
熟练掌握:
1.熟悉mysql,redis和cocos c++
2.熟悉游戏服务器大用户量同时在线的架构设计
3.熟悉格斗,捕鱼,手游类游戏的帧同步设计
2016/6―2017/3 [9个月]
C++服务器主程 | 技术
武汉百达富嘉网络科技有限公司
网络游戏 | 民营公司 | 少于50人
工作描述:
1.独立负责德州游戏"人人德州”服务器的网络,数据库,业务等模块的开发以及整体框架的搭建,“人人德州”
这款游戏已在苹果商店上线。
2.完成癞子麻将创建房间,加入房间,准备游戏,听牌,胡牌,正常的玩多盘麻将,每盘的战绩统计,房间结束,房间战绩统计等主要功
能。
3.实现斗地主的AI算法,可以进行一般水平的打扑克。
熟练掌握:
1.精通linux c++ qt开发,开发了一个linux版本的麻将服务器
2.熟悉Cocos2d-X C++开发
来自前程无忧简历
2014/5―2016/5 [2年]
手游GM工具开发工程师,APP服务器开发工程师 | 研发
上海晟旗网络科技有限公司
网络游戏 | 民营公司 | 少于50人
工作描述:
这是一家手游公司,公司推出的手游有"来自仙剑的你""死神"(Q版来自仙剑的你),我负责公司手游GM
运营工具的开发和游戏服务器的功能开发。
项目经验:
1.QT版游戏GM工具
项目模块:
a,玩家log,
b,玩家数据,
c,gm log,
d,玩家投诉,
e,发布公告(全服公告),
f,充值补偿,
g,奖励补偿(全服奖励),
h,cdkey查询,玩家禁言等
项目基于C/S架构,采用C++语言开发,使用windows api和QT界面库,stl,boost标准库,mongodb数据库。
2.Web版游戏GM工具,
项目基于B/S架构,使用C#语言, asp.net mvc框架, mongodb数据库。
3.大厅服务器业务功能的开发。
4.游戏的第三方登录模块和第三方支付模块。
熟练掌握:
1, 用C++ boost开发Tcp server和Http Server,以及linux下的Epoll Server。
2, 了解负载均衡和分布式,
a,负载均衡使用虚拟ip技术实现.即链路层的负载。
b,难点在于数据库的扩展,玩家数据一直增加,io查询所花的时间就越长.数据库的优化在于1,页面缓存 2,表的分割
3,索引等。页面缓存就是操作系统的缓存机制,对于单台数据库而言,增加内存即可.表的分割我个人觉得只能适当分割,分割太
细维护难度太大.索引很好,通过B+树数据结构,就像字典的目录那样,大大的加快了的数据的查询速度.搜索引擎的索引就是
key和postion的结构.
c,公司的服务器结构就是一个区一台服务器,每个服务器对应的有两台数据库服务器,一个master,一个slave
3, DirectX C++音乐播放器视频播放及vmr9视频播放,mongodb下载服务,Lucene .net(C#开源搜素引擎),ActiveMQ等。
2013/3―2014/5 [1年2个月]
C# ArcGIS研发工程师 | 软件研发
武汉聪源科技有限责任公司
计算机软件 | 民营公司 | 少于50人
工作描述:
这是一家地球空间信息相关行业的软件公司。我负责广东省电力设计研究院前期选址选线系统的开发。
来自前程无忧简历
项目名称: 广东省电力设计研究院前期选址选线系统
项目职责:
1, 负责广东省电力设计研究院前期选址选线系统的选线部分。
2, 选线部分最难的:最优路径算法的实现。
(这个系统主要由两个部分组成,即选址和选线。选址就是选择变电站的站址,共有起点和终点两个站址。选线就是在这两
个站址之间规划出一条线路,用于布置电缆和电线。 选线线路要符合:(1)
路径最短,在要避让障碍物的前提下,生成出一条距离最短的线路。 (2)
经济最优化,也即线路的转角塔数量要最少,线路所跨越区域天气情况要好,以及线路与障碍物之间的距离要最短,大于
避让范围 等。(3)
线路精度最精确客户方要求的精度是100米而一开始生成的线路精度只有500米为了优化这个算法花了很长时间。(4)
指定线路必过点和线,在线路生成模块里,指定必过点和线,那么生成的线路就必须要经过这些点和线。)
3,
完成模块a.系统配置模块b.线路配置模块c.线路导入模块d.线路生成模块e.线路编辑模块f.数据上传模块g
.选线工程结构树状图模块h.线路分段模块i.协议配置模块 等。
(选线工程结构图的结构是:项目下有起点,终点和多个方案,每个方案下有多个线路版本和多个线路分段,每个分段对应一
个分段协议,这些协议是客户方与线路所经过的每个地方政府所签订的,每个线路版本包含这些分段。)
4, 选线部分涉及很多的算法,在线路导入,线路生成,线路优化,线路分段等模块中都有体现。算法是选线部分最难的点。
5, 编写选线工程结构管理设计文档和测试用例。
熟练掌握:
1, 对游戏比较感兴趣, 实现一个有客户端和服务器的五子棋。五子棋的算法是自己实现的。
2, 精通C++ MFC开发。
2011/4―2013/3 [1年11个月]
软件工程师 | 技术研发
武汉家事易农业科技有限公司
互联网/电子商务 | 民营公司 | 150-500人
工作描述:
这是一家日用品电商公司。我负责流水线PDA系统及其他管理系统的开发。
工作职责:
1一期PDA服务器端的流水的记录以及客户端的修改。
2二期PDA项目整个PDA客户端的开发以及PDA服务器端的修改和并发的处理。
(客户端加入了自己很多的想法,比如和服务器中断连接后能够自动连接服务器,当连接上服务器之后会有相应的提示,
让工作人员继续做集货,验货等任务)
3用WCF搭建公司整个系统的框架(WCF端提供三个服务,分别服务于公司的三个系统)。
4,,会员注册模块的开发。
5质量追溯系统的开发。
熟练掌握:
1, 熟悉MFC开发Windows消息机制, QT 开发。
来自前程无忧简历
2, 熟悉XNA,Cocos2d-X引擎用XNA做过一个类似于捕鱼达人的2D游戏和一个3D模型。
教育经历
2008/9-2011/7
武汉工业职业学院
大专 | 设计
求职意向
职能:后端开发
职位:服务器工程师
工作地点:武汉, 上海
行业: 计算机软件,互联网/电子商务,计算机硬件,网络游戏,通信/电信/网络设备
期望薪资20000-40000元/月
到岗时间:随时
工作类型:全职
自我评价: 1.我是一个非常专注的人,对于我要做的事情我会做的很深,花大部分时间去钻研。专业化
能使你获得很大的财富,这是美国的一位 牛逼的期货交易员说的话。
2.熟练掌握C++,C#语言
3.精通服务器程序开发,熟悉pc端,cocos c++程序开发
技能特长
证书/成绩
2009/4
c1驾驶执照 , 英语三级
培训经历
2010/8-2011/4
.Net
培训机构:
北大青鸟
来自前程无忧简历
"""
# 智联1
chk_str3 = """应聘职位: Web开发工程师
应聘机构: 武汉乐谷在线科技有限公司 智联招聘
工作地点: 武汉
IDdKwLUJmFEUKjMy4LHsfzudiXdMlnCO9K 最近活跃时间6 月 8 日
张双琪
女 22岁 (1998年1月) 大专 考虑机会
现居住地:武汉 | 户口:孝感
手机18727456476
E-mail2576444306@qq.com
求职意向
web前端 武汉
4001-6000元/月| 互联网、IT服务、计算机软件| 全职
自我评价
1.对于研究新技术有浓厚的兴趣,善于分析总结
2.自学能力强在疫情期间自学了node.js和vue.js
3.对工作认真负责有较强的责任心性格开朗有较强的心3.理素质和抗压能力,在逆境时会对自身负情绪进行自我调节
4.有上进心,对团队协调能力强,有较强的团队意识
工作经历
2019.07-2020.01 武汉筑梦科技有限公司 (7个月)
web前端 |2001-4000元/月
计算机软件
工作描述: 主要从事自己负责Web前端开发。根据需求说明和设计文档完成所分模块的开发及负责模块的单元测试工作。
协助UI设计师完成也是设计工作提出技术实现条件。负责前端页面的开发和前端交互的设计以及网站前端
性能的优化和提升
项目经历
2019.11-2020.01 仿小米商城
项目描述: 项目描述:该项目包括首页,商品列表页,商品详情页,购物车页,注册页,登录页
开发技术HTML+CSSJavaScriptHTML5+CSS3Vue.js
具体模块 : 包括注册页、登录页、首页、商品展示页、购物车页
功能介绍1. 主要运用HTML5+CSS3来布局页面用JavaScript使得页面更加生动灵活
2. 分别运用了路由的调转来进行页面的切换调转的功能
3. 在首页的购买操作会记录在购物车的信息
岗位职责:
注册页:对用户输入的内容进行正则验证,随机验证码的验证
登录页:对用户提交的数据进行后台请求返回不同的页面,登陆成功改变登录状态
购物车ajax请求用户的数据并同步页面与数据库中的数据首页采用vue.js通过数据来驱动视图实现首页
的完美布局。
项目心得:
1.对vue.js用数据驱动试图更加的深刻对页面的整体布局有较深的理解
2.更加了解结构逻辑,更加提升了自己的编程能力
2019.10-2019.11 家装无忧
项目描述: 开发技术HTML+CSSJavaScriptHTML5+CSS3Bootstrap
项目描述:这是一个具特色的装饰公司的线上宣传网站,利用当下比较流行的
HTML5+CSS3对网页元素的渲染有着耳目一新的特点利用Bootstrap框架JavaScript使得网页的展示效果更具潮
流且生动,使得网页具有响应式布局的特点,用户在浏览时更能清楚快速的理解设计理念。
具体模块:包括首页、装修案例展示、设计师团队页、在线咨询、装修选材页面、招聘六大模块。
责任描述:
装修案例展示页面的开发:将具有优秀代表的装修案例工程项目展示。
装修知识的分类展示的开发:利用特色吸引用户的关注。
家装案例中部分家装风格模块的开发:把案例具体化。
了解家装无忧部分模块的开发:将企业风格,企业宗旨,企业理念以及业务具体展现。
项目心得:
1在完成项目的过程中让我更加熟练的掌握了JavaScript的知识锻炼了自己的编程能力
2让我对网页的布局动画等有了更深的理解能够轻松简单的操作HTML5+CSS3渲染动态网页效果
3运用Bootstrap实现网页的响应式布局适用不同的窗口展示区域的页面展示。
教育经历
2018.09 - 2020.06 湖北科技职业学院 移动应用开发 大专
培训经历
2019.10 - 2020.01 ajaxbootstrapphpvue.js
培训机构: 百里半
证书
2019.12 1+x中级证书
2018.03 学院二等奖学金
专业技能
html+css熟练
php和nodejs一般
bootstrap熟练
HTML5+CSS3熟练
JavaScript熟练
jquery熟练
ajax一般
vue.js良好
"""
# 智联2
chk_str4 = """
应聘职位: Web开发工程师
应聘机构: 武汉乐谷在线科技有限公司
工作地点: 武汉
IDdKwLUJmFEUKjMy4LHsfzueVqNyJnCO9K 最近活跃时间6月10日
聂礼旺    
  
男 ????23岁 (1997年2月) ????3年工作经验 ????大专 ????离职,随时到岗
现居住地:黄冈 红安县 | 户口:黄冈
手机15771198025
E-mailnie_fairy@163.com
求职意向
web前端??武汉
4001-6000元/月?| 计算机软件?| 全职
工作经历
2018.04 - 2019.10 ??湖北国网华中科技开发有限责任公司?? (1年 7个月)
web前端开发 | 4001-6000元/月
计算机软件
工作描述: 1、百分百还原UI设计页面
2、与后端沟通交流完成页面的交互作用
3、用vue原生JSbootstrapmui等框架完成项目
4、有独立项目开发经验会APP开发、能熟练处理兼容问题
项目经历
2019.09 - 2019.10 武汉市配网规划资料管理系统(移动端)
项目描述: 项目是一公司为国网武汉供电公司设计的一款用于各个区之间文件管理的app采用vue和mui框架构建。
2019.08 - 2019.09 湖北省汉江崔家营航电枢纽管理系统(已上线)
项目描述: 该项目是为湖北省汉江崔家营航电枢纽管理处设计的官网项目整体采用原生JS是崔家营航电管理处和湖北省运输交通厅连接的公众平台
2018.08 - 2019.10 浙江浙能集团能源综合系统
项目描述: 主要功能是入设计领导首页和数据展示页面通过canvas和echarts实现数据可视化操作更加生动形象的来展示数据。
2018.01 - 2018.05 医疗器械销售平台开发(移动端)
项目描述: 项目是一款医院和医疗器械公司内部使用的手机端APP采用vue框架构建其 中涉及mui触控滑动模块slide子页之间采用了懒加载技术保证用户体验。
教育经历
2016.09 - 2019.07 ??武汉软件工程职业学院 ??软件工程 ??大专
证书
2018.06 ??大学英语四级
语言能力
英语: 读写能力良好 | 听说能力熟练
"""
# 自制简历
chk_str5 = """应聘职位: Web开发工程师
应聘机构: 武汉乐谷在线科技有限公司 智联招聘
工作地点: 武汉
IDdKwLUJmFEUKjMy4LHsfzudiXdMlnCO9K 最近活跃时间6 月 8 日
张双琪
女 22岁 (1998年1月) 大专 考虑机会
现居住地:武汉 | 户口:孝感
手机18727456476
E-mail2576444306@qq.com
求职意向
web前端 武汉
4001-6000元/月| 互联网、IT服务、计算机软件| 全职
自我评价
1.对于研究新技术有浓厚的兴趣,善于分析总结
2.自学能力强在疫情期间自学了node.js和vue.js
3.对工作认真负责有较强的责任心性格开朗有较强的心3.理素质和抗压能力,在逆境时会对自身负情绪进行自我调节
4.有上进心,对团队协调能力强,有较强的团队意识
工作经历
2019.07-2020.01 武汉筑梦科技有限公司 (7个月)
web前端 |2001-4000元/月
计算机软件
工作描述: 主要从事自己负责Web前端开发。根据需求说明和设计文档完成所分模块的开发及负责模块的单元测试工作。
协助UI设计师完成也是设计工作提出技术实现条件。负责前端页面的开发和前端交互的设计以及网站前端
性能的优化和提升
项目经历
2019.11-2020.01 仿小米商城
项目描述: 项目描述:该项目包括首页,商品列表页,商品详情页,购物车页,注册页,登录页
开发技术HTML+CSSJavaScriptHTML5+CSS3Vue.js
具体模块 : 包括注册页、登录页、首页、商品展示页、购物车页
功能介绍1. 主要运用HTML5+CSS3来布局页面用JavaScript使得页面更加生动灵活
2. 分别运用了路由的调转来进行页面的切换调转的功能
3. 在首页的购买操作会记录在购物车的信息
岗位职责:
注册页:对用户输入的内容进行正则验证,随机验证码的验证
登录页:对用户提交的数据进行后台请求返回不同的页面,登陆成功改变登录状态
购物车ajax请求用户的数据并同步页面与数据库中的数据首页采用vue.js通过数据来驱动视图实现首页
的完美布局。
项目心得:
1.对vue.js用数据驱动试图更加的深刻对页面的整体布局有较深的理解
2.更加了解结构逻辑,更加提升了自己的编程能力
2019.10-2019.11 家装无忧
项目描述: 开发技术HTML+CSSJavaScriptHTML5+CSS3Bootstrap
项目描述:这是一个具特色的装饰公司的线上宣传网站,利用当下比较流行的
HTML5+CSS3对网页元素的渲染有着耳目一新的特点利用Bootstrap框架JavaScript使得网页的展示效果更具潮
流且生动,使得网页具有响应式布局的特点,用户在浏览时更能清楚快速的理解设计理念。
具体模块:包括首页、装修案例展示、设计师团队页、在线咨询、装修选材页面、招聘六大模块。
责任描述:
装修案例展示页面的开发:将具有优秀代表的装修案例工程项目展示。
装修知识的分类展示的开发:利用特色吸引用户的关注。
家装案例中部分家装风格模块的开发:把案例具体化。
了解家装无忧部分模块的开发:将企业风格,企业宗旨,企业理念以及业务具体展现。
项目心得:
1在完成项目的过程中让我更加熟练的掌握了JavaScript的知识锻炼了自己的编程能力
2让我对网页的布局动画等有了更深的理解能够轻松简单的操作HTML5+CSS3渲染动态网页效果
3运用Bootstrap实现网页的响应式布局适用不同的窗口展示区域的页面展示。
教育经历
2018.09 - 2020.06 湖北科技职业学院 移动应用开发 大专
培训经历
2019.10 - 2020.01 ajaxbootstrapphpvue.js
培训机构: 百里半
证书
2019.12 1+x中级证书
2018.03 学院二等奖学金
专业技能
html+css熟练
php和nodejs一般
bootstrap熟练
HTML5+CSS3熟练
JavaScript熟练
jquery熟练
ajax一般
vue.js良好
"""
fmt_txt(chk_str3)