欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

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

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

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

1. 打開docx的壓縮包

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

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

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

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

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

0x01 獲取docx信息

利用python的zipfile庫以及re庫來處理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里的所有標記符
  ###如果多份簡歷在同一個word文件里###
  #table_list = text.split("XX簡歷")[1:]#依據簡歷標題切分每一份簡歷信息
  #return table_list
  return text

打印text的結果

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

0x02 抓取各字段值

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

import re
def 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 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里的所有標記符
  ###如果多份簡歷在同一個word文件里###
  table_list = text.split("XX簡歷")[1:]#依據簡歷標題切分每一份簡歷信息
  return table_list
def 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
cv_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 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表格以及插入數據"""
  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對應文檔中的“節(jié)”
  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')

生成示例

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

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

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

相關文章

  • python 根據pid殺死相應進程的方法

    python 根據pid殺死相應進程的方法

    下面小編就為大家?guī)硪黄猵ython 根據pid殺死相應進程的方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • python八大排序算法速度實例對比

    python八大排序算法速度實例對比

    這篇文章主要介紹了Python八大排序算法速度實例對比,具有一定參考價值,需要的朋友可以參考下。
    2017-12-12
  • 基于Python獲取城市近7天天氣預報

    基于Python獲取城市近7天天氣預報

    這篇文章主要介紹了基于Python獲取城市近7天天氣預報,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • python二叉樹遍歷的實現方法

    python二叉樹遍歷的實現方法

    這篇文章主要介紹了python二叉樹遍歷的實現方法,使用了三種遍歷:先序遍歷,中序遍歷,后序遍歷,方法大家參考使用
    2013-11-11
  • 使用Python實現控制攝像頭的方法詳解

    使用Python實現控制攝像頭的方法詳解

    當今,隨著計算機技術的發(fā)展,攝像頭已經成為了人們生活中不可或缺的一部分。而Python作為一種流行的編程語言,也可以輕松地控制和操作攝像頭。本文將介紹如何使用Python中的常用庫(例如OpenCV和Tkinter)來控制和操作攝像頭,需要的可以參考一下
    2023-03-03
  • pycharm xpath路徑出錯的問題及解決

    pycharm xpath路徑出錯的問題及解決

    這篇文章主要介紹了pycharm xpath路徑出錯的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Python 除法小技巧

    Python 除法小技巧

    Python中將兩個整數相除,默認結果是為整數的。但我們可以通過下面的方法,使得兩個整數相除的結果為小數。
    2008-09-09
  • python多線程死鎖現象及解決方法

    python多線程死鎖現象及解決方法

    這篇文章主要為大家介紹了python多線程死鎖現象與解決方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Python 中的 global 標識對變量作用域的影響

    Python 中的 global 標識對變量作用域的影響

    global 標識用于在函數內部,修改全局變量的值。這篇文章主要介紹了Python 的 global 標識對變量作用域的影響,需要的朋友可以參考下
    2019-08-08
  • 導入tensorflow:ImportError: libcublas.so.9.0 報錯

    導入tensorflow:ImportError: libcublas.so.9.0 報錯

    這篇文章主要介紹了導入tensorflow:ImportError: libcublas.so.9.0 報錯,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01

最新評論