av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

使用python處理一萬份word表格簡歷操作

瀏覽:63日期:2022-06-25 09:46:20
前言

有一天朋友A向我抱怨,他的老板要求他把幾百份word填好的word表格簡歷信息整理到excel中,看著他一個個將姓名,年齡……從word表格里復制粘貼到excel里,邊粘貼心里邊暗暗詛咒著自己的boss……但畢竟新手小白,又不能違背老板的意愿說我不干了,愛咋咋地,于是過來向我求助。我說,這事情好辦啊,學學python就能解決啊,簡單容易上手。好了,接下來進入正題。

思路:首先針對每一份word表格進行分析

使用python處理一萬份word表格簡歷操作

怎么才能利用python獲取到word表格里面的信息,最初的想法是把word里面的表格轉成網頁格式,畢竟混跡爬蟲淺水區多年,用正則表達式處理網頁來獲取信息是比較輕松的,于是想到把word轉成網頁格式,這么一想,整個人都瘋了,幾百份文件打開然后轉成網頁,那也有不少勞動量啊。于是在網上搜了許久,發現docx文件自己本身是壓縮文件,打開壓縮包之后竟然發現里面有個專門存儲word里面文本的文件。

使用python處理一萬份word表格簡歷操作

打開文件找,發現我們想要的信息全都藏在這個名為document.xml的文件里

使用python處理一萬份word表格簡歷操作

于是基本過程就可以確定了

1. 打開docx的壓縮包

2. 獲取word里面的正文信息

3. 利用正則表達式匹配出我們想要的信息

4. 將信息存儲到txt中(txt可以用excel打開)

5. 批量調用上述過程,完成一萬份簡歷的提取工作

6. (檢查數據是否有錯誤或缺失)

0x01 獲取docx信息

利用python的zipfile庫以及re庫來處理docx壓縮包里面的document.xml文件里的信息。

import zipfileimport redef get_document(filepath): z = zipfile.ZipFile(filepath, 'r') text = z.read('word/document.xml').decode('UTF-8') text = re.sub(r'<.*?>', '', text)#去除xml里的所有標記符 ###如果多份簡歷在同一個word文件里### #table_list = text.split('XX簡歷')[1:]#依據簡歷標題切分每一份簡歷信息 #return table_list return text

打印text的結果

使用python處理一萬份word表格簡歷操作

自此,輸出了簡歷中的所有相關信息

0x02 抓取各字段值

接下來根據這些相關信息抓取各個字段的值

import redef get_field_value(text): value_list = [] m = re.findall(r'姓 名(.*?)性 別', table) value_list.append(m) m = re.findall(r'性 別(.*?)學 歷', table) value_list.append(m) m = re.findall(r'民 族(.*?)健康狀況', table) value_list.append(m) ’’’ 此處省略其他字段匹配 ’’’ return value_list

這樣就將每個字段匹配到的內容以一個列表的形式返回了

0x03 將內容寫入到文件

接下來將這個列表里的內容寫入到txt中

str1 = ''for value in value_list: str1 = str1 + str(value[0]) + 't'#每個字段值用制表符t分隔str1 = str1 + 'n'with open('result.txt', 'a+') as f:#將內容以追加形式寫入到result.txt中 f.write(str1)

以上是將一個word轉成了txt

只要再對文件夾中的文件進行批量處理就ok了

0x04 批量處理完整代碼

以下附上完整代碼

import reimport zipfileimport osdef get_document(filepath): z = zipfile.ZipFile(filepath, 'r') text = z.read('word/document.xml').decode('UTF-8') text = re.sub(r'<.*?>', '', text)#去除xml里的所有標記符 ###如果多份簡歷在同一個word文件里### table_list = text.split('XX簡歷')[1:]#依據簡歷標題切分每一份簡歷信息 return table_listdef get_field_value(text): value_list = [] m = re.findall(r'姓 名(.*?)性 別', table) value_list.append(m) m = re.findall(r'性 別(.*?)學 歷', table) value_list.append(m) m = re.findall(r'民 族(.*?)健康狀況', table) value_list.append(m) ’’’ 此處省略其他字段匹配 ’’’ return value_listcv_list = []for i in os.listdir(os.getcwd()): a = os.path.splitext(os.getcwd() + '' + i)#獲取當前目錄下所有文件的文件名 if a[1] == ’.docx’:#如果文件后綴 print(os.getcwd()+''+i) cv_list = cv_list + get_document(os.getcwd() + '' + i)#每份簡歷信息為一個列表元素for i in cv_list: value_list = get_field_value(i) str1 = '' for value in value_list: str1 = str1 + str(value[0]) + 't' str1 = str1 + 'n' with open('result.txt', 'a+') as f: f.write(str1)

一萬份word表格簡歷信息轉成了txt,然后用excel打開txt即可。

補充:python word表格一些操作

數據格式(datas): 列表套列表

aa =[ [1,2,3,4,5],[6,7,8,9],[]…]

import osimport requestsimport jsonimport datetimefrom docx import Documentfrom docx.shared import Inches, Pt, Cmfrom docx.oxml.ns import qnfrom docx.enum.text import WD_PARAGRAPH_ALIGNMENTdef create_insert_word_table(datas, stday, etday, s): '''創建word表格以及插入數據''' doc = Document() doc.styles[’Normal’].font.name = ’Calibri’ # 是用來設置當文字是西文時的字體, doc.styles[’Normal’]._element.rPr.rFonts.set(qn(’w:eastAsia’), u’宋體’) # 是用來設置當文字是中文時的字體 # doc.styles[’Normal’].font.size = Pt(14) # 設置所有文字字體大小為14 distance = Inches(0.5) sec = doc.sections[0] # sections對應文檔中的“節” sec.left_margin = distance # 以下依次設置左、右、上、下頁面邊距 sec.right_margin = distance sec.top_margin = distance sec.bottom_margin = distance sec.page_width = Inches(11.7) # 設置頁面寬度 # sec.page_height = Inches(9) # 設置頁面高度 # doc.add_heading() # 設置標題,但是不符合我的條件,只能試用下方p.add_run(’我是文字’) p = doc.add_paragraph() # 添加段落 p.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 設置中央對齊 run = p.add_run(’我是文字’) run.font.size = Pt(22) doc.add_paragraph() # 添加空段落 # 添加表格 table = doc.add_table(rows=1, cols=10, style=’Table Grid’) table.style.name = ’Table Grid’ table.style.font.size = Pt(14) table.rows[0].height = Cm(20) title = table.rows[0].cells title[0].text = ’姓名’ title[1].text = ’1’ title[2].text = ’2’ title[3].text = ’3’ title[4].text = ’4’ title[5].text = ’5’ title[6].text = ’6 ’ title[7].text = ’7’ title[8].text = ’8’ title[9].text = ’9’ for i in range(len(datas)): cels = table.add_row().cells for j in range(len(datas[i])): # cels[j].text = str(datas[i][j]) p = cels[j].paragraphs[0] p.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 設置中央對齊 p.add_run(str(datas[i][j])) ph_format = p.paragraph_format # ph_format.space_before = Pt(10) # 設置段前間距 # ph_format.space_after = Pt(12) # 設置段后間距 ph_format.line_spacing = Pt(40) # 設置行間距 doc.save(’./files/項目總結.docx’)生成示例

使用python處理一萬份word表格簡歷操作

可能出現的錯誤,[Errno 13] Permission denied: ‘./files/項目進展總結.docx’

是因為你打開文件未關閉,操作不了,關閉他就好了

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: python
相關文章:
主站蜘蛛池模板: 久久男人 | 久久久www成人免费无遮挡大片 | 日本精品视频在线观看 | 成人精品鲁一区一区二区 | 精品久久久久久久久久久久久 | 精品久久九九 | 在线免费观看视频你懂的 | 一区二区三区四区在线 | 一区二区国产在线 | 精品国产色 | 蜜桃av鲁一鲁一鲁一鲁 | 国产精品福利网 | 中文字字幕一区二区三区四区五区 | 亚洲精品三级 | 欧美三级在线 | 99国产视频 | 欧美亚洲第一区 | 久草在线 | 蜜桃免费av| 亚洲国产视频一区二区 | 污片在线观看 | 国产成人精品一区二区 | 黄网站免费在线观看 | 亚洲国产精品va在线看黑人 | 国产高清视频在线 | 亚洲成人免费观看 | 国产精品一区二区三区在线 | 成年男女免费视频网站 | 欧美精品在欧美一区二区少妇 | 一级欧美| 在线成人免费视频 | 日本成人三级电影 | 国产精品久久亚洲 | 国产激情视频 | 国产精品一区久久久 | 国产成人精品一区二区三区在线 | 国产精品伦理一区二区三区 | 99精品欧美一区二区蜜桃免费 | 欧美日韩三级 | 亚洲午夜av久久乱码 | 91精品久久久久久久久久 |