使用python处理一万份word表格简历操作

前言

有一天朋友A向我抱怨,他的老板要求他把几百份word填好的word表格简历信息整理到excel中,看着他一个个将姓名,年龄……从word表格里复制粘贴到excel里,边粘贴心里边暗暗诅咒着自己的boss……但毕竟新手小白,又不能违背老板的意愿说我不干了,爱咋咋地,于是过来向我求助。我说,这事情好办啊,学学python就能解决啊,简单容易上手。好了,接下来进入正题。

思路:首先针对每一份word表格进行分析

怎么才能利用python获取到word表格里面的信息,最初的想法是把word里面的表格转成网页格式,毕竟混迹爬虫浅水区多年,用正则表达式处理网页来获取信息是比较轻松的,于是想到把word转成网页格式,这么一想,整个人都疯了,几百份文件打开然后转成网页,那也有不少劳动量啊。于是在网上搜了许久,发现docx文件自己本身是压缩文件,打开压缩包之后竟然发现里面有个专门存储word里面文本的文件。

打开文件找,发现我们想要的信息全都藏在这个名为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):
  """创建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')

生成示例

可能出现的错误,[Errno 13] Permission denied: ‘./files/项目进展总结.docx'

是因为你打开文件未关闭,操作不了,关闭他就好了

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • 使用Python docx修改word关键词颜色的操作

    需求: 在刷word题库的时候,答案就在题目下方,干扰复习效果,将答案字体变成白色,查看答案的时候只需要将答案背景刷黑 转换需求: 在word中找到关键字"答案"将其后面的信息改变颜色为白色 由于第一次使用 import docx,最初想按照如上思想实现比较麻烦,后整理思路,将题库保存为txt,逐条读取转存入word,利用分割函数对关键字进行分割,关键字后面的信息即为答案改变颜色,效果和需求一致,只是新建了文件 实现代码: import os import re import docx

  • Python WordCloud 修改色调的实现方式

    在绘制词云图时发现有的字颜色为黄色导致看不清因此需要修改整个词云图的色调为冷色调 具体的来说 wordcloud中的color_func 参数使得我们能够自定义颜色函数 def random_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None): h = randint(120,250) s = int(100.0 * 255.0 / 25

  • Python 制作词云的WordCloud参数用法说明

    场景 官方API: https://amueller.github.io/word_cloud/generated/wordcloud.WordCloud.html 实现 font_path : string #字体路径,需要展现什么字体就把该字体路径+后缀名写上,如:font_path = '黑体.ttf' width : int (default=400) #输出的画布宽度,默认为400像素 height : int (default=200) #输出的画布高度,默认为200像素 prefe

  • Python 自动化修改word的案例

    前言 利用Python docx模块,可以很方便地打开和修改Word 2007及以后的文档.本文简单地介绍了如何使用python修改word文档中的内容. 例子与代码 word文档的内容是一封表扬信,内容见下图: 表扬信.png 现在需要通过python对,"表扬信.docx"文档进行修改,需要修改的地方已在图中标记出. 1.第一个箭头处,首行缩进2字符 2.第二个箭头处,对段落进行左缩进2字符,并添加"向小z同学学习!" 3.第三个和第四个箭头处,进行右对齐,并右

  • python 将Excel转Word的示例

    在日常工作中,Python在办公自动化领域应用非常广泛,如批量将多个Excel中的数据进行计算并生成图表,批量将多个Excel按固定格式转换成Word,或者定时生成文件并发送邮件等场景.本文主要以一个简单的小例子,简述Python在Excel和Word方面进行相互转换的相关知识点,谨供学习分享使用,如有不足之处,还请指正. 相关知识点 本文主要是将Excel文件通过一定规则转换成Word文档,涉及知识点如下所示: xlrd模块:主要用于Excel文件的读取,相关内容如下: xlrd.open_w

  • python生成word合同的实例方法

    在企业招聘中,最重要的事情,就是需要签订劳动合同,但是有些大的公司,因为人员过于,在设置编辑合同的时候,比较耗时耗力,编程存在的意义,就是帮助我们实现办公自动化,因此能实现自动生成合同,还是非常重要的,下面小编就来采用函数以及面向对象过程,教大家实现生成合同过程. 1.模板文件 甲方公司.乙方人员姓名.乙方部门.乙方职位.甲方人员姓名.乙方人员姓名.时间(年月日),如图所示. 2.实现代码 from docxtpl import DocxTemplate import os import pym

  • 使用python处理一万份word表格简历操作

    前言 有一天朋友A向我抱怨,他的老板要求他把几百份word填好的word表格简历信息整理到excel中,看着他一个个将姓名,年龄--从word表格里复制粘贴到excel里,边粘贴心里边暗暗诅咒着自己的boss--但毕竟新手小白,又不能违背老板的意愿说我不干了,爱咋咋地,于是过来向我求助.我说,这事情好办啊,学学python就能解决啊,简单容易上手.好了,接下来进入正题. 思路:首先针对每一份word表格进行分析 怎么才能利用python获取到word表格里面的信息,最初的想法是把word里面的表

  • poi导出word表格的操作讲解

    一.效果如下 二.js代码 function export_word(){ //导出word var url = "czzsca/exportWord.do"; this.export(url); } function export(url){ var currentyear = $("#mainYear").val() * 1; var key_columns = ['xh',"d_name","d_unit","

  • python实现翻译word表格小程序

    背景 原是弱电集成的设计员,纠结很久后参加了python培训机构转职后的一员小白,由于一次工作中需要翻译一份近100页word表格,纯手工翻译大概三个小时,为了解决这种重复又耗时的劳动,并重温python相关知识所以制作了该小程序. 脚本详情 import re import docx import time import pandas as pd from selenium import webdriver from selenium.webdriver.chrome.options impo

  • Python将多份excel表格整理成一份表格

    利用Python将多份excel表格整理成一份表格,抛弃过去逐份打开复制粘贴的方式. 直接附上代码: import xlrd import xlwt import os from xlutils.copy import copy import os.path from xlwt import * dir = input("输入文件路径\n"); start_row = input("输入需要读取起始行号\n"); start_row = int(start_row)

  • Python使用win32com模块实现数据库表结构自动生成word表格的方法

    本文实例讲述了Python使用win32com模块实现数据库表结构自动生成word表格的方法.分享给大家供大家参考,具体如下: 下载win32模块 下载链接:https://sourceforge.net/projects/pywin32/files/pywin32/ 连接mysql import MySQLdb db_host = "" db_port = 3306 db_name = "" db_user = "" db_pwd = &quo

  • Python实现Word表格转成Excel表格的示例代码

    准备工作 pip install docx pip install openpyxl 具体代码 # 没有的先pip install 包名称 from docx import Document from openpyxl import Workbook document = Document('Docx文件路径.dicx') count = 0 tables = [] wb = Workbook() ws = wb.active # 设置列数,可以指定列名称,有几列就设置几个, # A对应列1,B

  • Python实现将Word表格嵌入到Excel中

    今日需求 其实就是把Word中的表格转到Excel中,顺便做一个调整.这个需求在实际工作中,很多人还是经常碰到的! 如果单单是两个表格,那只要简单的复制黏贴即可,但如果上百了呢?那就得考虑自动化了.好在今天碰到的需求中的原文件格式是比较有规律的,那直接来尝试一下. # 首先要pip install python-docx # 如果原文件是doc格式,那就先转成docx from docx import Document import pandas as pd path = "./word表格转e

  • 利用Python实现读取Word表格计算汇总并写入Excel

    目录 前言 一.首先导入包 二.读评价表所在的目录文件 三.读word文件,处理word中的表格数据 四.统计计算 五.将统计计算结果写入汇总Excel 完整代码 总结 前言 快过年了,又到了公司年底评级的时候了.今年的评级和往常一下,每个人都要填写公司的民主评议表,给各个同事进行评价打分,然后部门收集起来根据收集上来的评价表进行汇总统计.想想要收集几十号人的评价表,并根据每个人的评价表又要填到Excel中进行汇总计算统计给出每个人的评价,就头大.虽然不是个什么难事,但是是个无脑的细致活.几十个

  • 基于python的docx模块处理word和WPS的docx格式文件方式

    Python docx module for Word or WPS processing 本文是通过docx把word中的表格中的某些已填好的内容提取出来,存入excel表格. 首先安装docx的python模块: pip install python-docx 由于处理的为中文和符号,改成utf-8编码格式 import sys reload(sys) sys.setdefaultencoding('utf-8') from docx import Document import panda

  • 使用Python自动化Microsoft Excel和Word的操作方法

    将Excel与Word集成,无缝生成自动报告 毫无疑问,微软的Excel和Word是公司和非公司领域使用最广泛的两款软件.它们实际上是"工作"的同义词.通常情况下,每一周我们都会将两者结合起来,并以某种方式发挥它们的优点.虽然一般的日常用途不会要求自动化,但有时自动化可能是必需的.也就是说,当您有大量的图表.图形.表格和报告要生成时,如果您选择手动方式,它可能会成为一项极其繁琐的工作.其实没必要这样.实际上,有一种方法可以在Python中创建一个管道,您可以将两者无缝集成,在Excel

随机推荐