最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用python處理一萬(wàn)份word表格簡(jiǎn)歷操作

 更新時(shí)間:2021年03月12日 17:25:51   作者:geoker  
這篇文章主要介紹了使用python處理一萬(wàn)份word表格簡(jiǎn)歷操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

前言

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

思路:首先針對(duì)每一份word表格進(jìn)行分析

怎么才能利用python獲取到word表格里面的信息,最初的想法是把word里面的表格轉(zhuǎn)成網(wǎng)頁(yè)格式,畢竟混跡爬蟲(chóng)淺水區(qū)多年,用正則表達(dá)式處理網(wǎng)頁(yè)來(lái)獲取信息是比較輕松的,于是想到把word轉(zhuǎn)成網(wǎng)頁(yè)格式,這么一想,整個(gè)人都瘋了,幾百份文件打開(kāi)然后轉(zhuǎn)成網(wǎng)頁(yè),那也有不少勞動(dòng)量啊。于是在網(wǎng)上搜了許久,發(fā)現(xiàn)docx文件自己本身是壓縮文件,打開(kāi)壓縮包之后竟然發(fā)現(xiàn)里面有個(gè)專門(mén)存儲(chǔ)word里面文本的文件。

打開(kāi)文件找,發(fā)現(xiàn)我們想要的信息全都藏在這個(gè)名為document.xml的文件里

于是基本過(guò)程就可以確定了

1. 打開(kāi)docx的壓縮包

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

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

4. 將信息存儲(chǔ)到txt中(txt可以用excel打開(kāi))

5. 批量調(diào)用上述過(guò)程,完成一萬(wàn)份簡(jiǎn)歷的提取工作

6. (檢查數(shù)據(jù)是否有錯(cuò)誤或缺失)

0x01 獲取docx信息

利用python的zipfile庫(kù)以及re庫(kù)來(lái)處理docx壓縮包里面的document.xml文件里的信息。

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

打印text的結(jié)果

自此,輸出了簡(jiǎn)歷中的所有相關(guān)信息

0x02 抓取各字段值

接下來(lái)根據(jù)這些相關(guān)信息抓取各個(gè)字段的值

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

這樣就將每個(gè)字段匹配到的內(nèi)容以一個(gè)列表的形式返回了

0x03 將內(nèi)容寫(xiě)入到文件

接下來(lái)將這個(gè)列表里的內(nèi)容寫(xiě)入到txt中

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

以上是將一個(gè)word轉(zhuǎn)成了txt

只要再對(duì)文件夾中的文件進(jìn)行批量處理就ok了

0x04 批量處理完整代碼

以下附上完整代碼

import re
import zipfile
import os
def get_document(filepath):
  z = zipfile.ZipFile(filepath, "r")
  text = z.read("word/document.xml").decode("UTF-8")
  text = re.sub(r"<.*?>", "", text)#去除xml里的所有標(biāo)記符
  ###如果多份簡(jiǎn)歷在同一個(gè)word文件里###
  table_list = text.split("XX簡(jiǎn)歷")[1:]#依據(jù)簡(jiǎn)歷標(biāo)題切分每一份簡(jiǎn)歷信息
  return table_list
def get_field_value(text):
  value_list = []
  m = re.findall(r"姓 名(.*?)性  別", table)
  value_list.append(m)
  m = re.findall(r"性  別(.*?)學(xué)  歷", table)
  value_list.append(m)
  m = re.findall(r"民 族(.*?)健康狀況", table)
  value_list.append(m)  
  '''
  此處省略其他字段匹配
  '''
  return value_list
cv_list = []
for i in os.listdir(os.getcwd()):
  a = os.path.splitext(os.getcwd() + "\\" + i)#獲取當(dāng)前目錄下所有文件的文件名
  if a[1] == '.docx':#如果文件后綴
    print(os.getcwd()+"\\"+i)
    cv_list = cv_list + get_document(os.getcwd() + "\\" + i)#每份簡(jiǎn)歷信息為一個(gè)列表元素
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)

一萬(wàn)份word表格簡(jiǎn)歷信息轉(zhuǎn)成了txt,然后用excel打開(kāi)txt即可。

補(bǔ)充:python word表格一些操作

數(shù)據(jù)格式(datas): 列表套列表

aa =[ [1,2,3,4,5],[6,7,8,9],[]…]
import os
import requests
import json
import datetime
from docx import Document
from docx.shared import Inches, Pt, Cm
from docx.oxml.ns import qn
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
def create_insert_word_table(datas, stday, etday, s):
  """創(chuàng)建word表格以及插入數(shù)據(jù)"""
  doc = Document()
  doc.styles['Normal'].font.name = 'Calibri' # 是用來(lái)設(shè)置當(dāng)文字是西文時(shí)的字體,
  doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體') # 是用來(lái)設(shè)置當(dāng)文字是中文時(shí)的字體
  # doc.styles['Normal'].font.size = Pt(14) # 設(shè)置所有文字字體大小為14
  distance = Inches(0.5)
  sec = doc.sections[0] # sections對(duì)應(yīng)文檔中的“節(jié)”
  sec.left_margin = distance # 以下依次設(shè)置左、右、上、下頁(yè)面邊距
  sec.right_margin = distance
  sec.top_margin = distance
  sec.bottom_margin = distance
  sec.page_width = Inches(11.7) # 設(shè)置頁(yè)面寬度
  # sec.page_height = Inches(9) # 設(shè)置頁(yè)面高度
  # doc.add_heading() # 設(shè)置標(biāo)題,但是不符合我的條件,只能試用下方p.add_run('我是文字')
  p = doc.add_paragraph() # 添加段落
  p.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 設(shè)置中央對(duì)齊
  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 # 設(shè)置中央對(duì)齊
      p.add_run(str(datas[i][j]))
      ph_format = p.paragraph_format
      # ph_format.space_before = Pt(10) # 設(shè)置段前間距
      # ph_format.space_after = Pt(12) # 設(shè)置段后間距
      ph_format.line_spacing = Pt(40) # 設(shè)置行間距
  doc.save('./files/項(xiàng)目總結(jié).docx')

生成示例

可能出現(xiàn)的錯(cuò)誤,[Errno 13] Permission denied: ‘./files/項(xiàng)目進(jìn)展總結(jié).docx'

是因?yàn)槟愦蜷_(kāi)文件未關(guān)閉,操作不了,關(guān)閉他就好了

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 基于Python實(shí)現(xiàn)視頻轉(zhuǎn)字符畫(huà)動(dòng)漫小工具

    基于Python實(shí)現(xiàn)視頻轉(zhuǎn)字符畫(huà)動(dòng)漫小工具

    大家都知道視頻就是一幀一幀的圖片構(gòu)成的。那么想要實(shí)現(xiàn)將視頻轉(zhuǎn)換為字符畫(huà),就要將一部視頻全部逐幀拆解成圖片,然后采取和以前相同的將圖片轉(zhuǎn)換為字符畫(huà)的算法即可。本文將詳細(xì)為大家介紹如何實(shí)現(xiàn),需要的可以參考一下
    2021-12-12
  • python題解LeetCode303區(qū)域和檢索示例詳解

    python題解LeetCode303區(qū)域和檢索示例詳解

    這篇文章主要為大家介紹了python題解LeetCode303區(qū)域和檢索示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • django orm 通過(guò)related_name反向查詢的方法

    django orm 通過(guò)related_name反向查詢的方法

    今天小編就為大家分享一篇django orm 通過(guò)related_name反向查詢的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • python 字符串常用方法匯總詳解

    python 字符串常用方法匯總詳解

    這篇文章主要介紹了python 字符串方法匯總詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python實(shí)現(xiàn)的Kmeans++算法實(shí)例

    Python實(shí)現(xiàn)的Kmeans++算法實(shí)例

    這篇文章主要介紹了Kmeans和kmeans++算法,講解了Kmeans算法的缺點(diǎn)和kmeans++算法的實(shí)現(xiàn)思路,以及Python和matlab中實(shí)現(xiàn)的Kmeans++算法,需要的朋友可以參考下
    2014-04-04
  • 深度解析Python線程和進(jìn)程

    深度解析Python線程和進(jìn)程

    這篇文章主要介紹了Python線程和進(jìn)程的相關(guān)知識(shí),包括線程與進(jìn)程的區(qū)別,通過(guò)示例代碼介紹了進(jìn)程與線程的操作方法,需要的朋友可以參考下
    2022-04-04
  • python解析HTML并提取span標(biāo)簽中的文本

    python解析HTML并提取span標(biāo)簽中的文本

    在網(wǎng)頁(yè)開(kāi)發(fā)和數(shù)據(jù)抓取過(guò)程中,我們經(jīng)常需要從HTML頁(yè)面中提取信息,尤其是span元素中的文本,span標(biāo)簽是一個(gè)行內(nèi)元素,通常用于包裝一小段文本或其他元素,在Python中,我們可以通過(guò)使用BeautifulSoup或lxml等庫(kù)來(lái)解析HTML并提取span標(biāo)簽中的文本
    2024-12-12
  • Python3網(wǎng)絡(luò)爬蟲(chóng)開(kāi)發(fā)實(shí)戰(zhàn)之極驗(yàn)滑動(dòng)驗(yàn)證碼的識(shí)別

    Python3網(wǎng)絡(luò)爬蟲(chóng)開(kāi)發(fā)實(shí)戰(zhàn)之極驗(yàn)滑動(dòng)驗(yàn)證碼的識(shí)別

    本節(jié)我們的目標(biāo)是用程序來(lái)識(shí)別并通過(guò)極驗(yàn)驗(yàn)證碼的驗(yàn)證,其步驟有分析識(shí)別思路、識(shí)別缺口位置、生成滑塊拖動(dòng)路徑,最后模擬實(shí)現(xiàn)滑塊拼合通過(guò)驗(yàn)證。需要的朋友可以參考下
    2019-08-08
  • Python基于Matplotlib庫(kù)簡(jiǎn)單繪制折線圖的方法示例

    Python基于Matplotlib庫(kù)簡(jiǎn)單繪制折線圖的方法示例

    這篇文章主要介紹了Python基于Matplotlib庫(kù)簡(jiǎn)單繪制折線圖的方法,涉及Python Matplotlib庫(kù)的相關(guān)使用技巧,需要的朋友可以參考下
    2017-08-08
  • 淺談python寫(xiě)入大量文件的問(wèn)題

    淺談python寫(xiě)入大量文件的問(wèn)題

    今天小編就為大家分享一篇淺談python寫(xiě)入大量文件的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11

最新評(píng)論

衡山县| 德化县| 哈密市| 竹溪县| 于田县| 榆中县| 日土县| 象州县| 虞城县| 沭阳县| 双江| 永平县| 云阳县| 太康县| 普宁市| 仁怀市| 景洪市| 呈贡县| 九江县| 泾阳县| 江西省| 临洮县| 内江市| 新巴尔虎右旗| 黔东| 洛宁县| 光泽县| 巴青县| 乌兰浩特市| 大关县| 河东区| 龙山县| 河间市| 阜阳市| 理塘县| 科尔| 响水县| 望谟县| 通州区| 宿迁市| 彭山县|