使用docx2txt和正则表达式提取多个docx文本内容,并且将结果合并成DataFrame格式。

1. 提取文件路径 & 名称

需要提取文件夹中多个.docx文档,创建cv_list获取所有文件路径,doc_name是文件名,方便之后批量处理。

# 导入工具包
import pandas as pd
import jieba
import docx
import numpy as np
import re
import zipfile
import os
from bs4 import BeautifulSoup
import docx2txt#提取文件路径和文件名
cv_list = [] #路径
doc_name = [] #文件名
for i in os.listdir(os.getcwd()):a = os.path.splitext(os.getcwd() + "/" + i)#获取当前目录下所有文件的文件名if a[1] == '.docx':#如果文件后缀cv_list.append(os.getcwd()+"/"+i) doc_name.append(i)#创建表格
df = pd.DataFrame({'文件名':doc_name,'文件地址':cv_list})
df

2. 文本内容提取

提取文本的基本步骤:
1)首先是通过docx2txt.process()将整篇docx文档转换为txt模式,再使用正则表达式将对应的文本提取出来;
2)使用def将步骤1)打包成函数,用for找出cv_list里的所有文件中的指定内容。
注意: 这种方法适合文档的格式都一致的情况。

文档格式一致的情况

例如:需要提取文档中的年龄资料。

# 查看文档内容
docx2txt.process('/Users/mac/Documents/python/Noet/003aaaa.docx')

#提取文档中的年龄内容
def extract_age(filepath):text = docx2txt.process(filepath) #提取txt格式的内容findword = u"(\d\d+岁)"#定位查询的内容、格式pattern = re.compile(findword)results = pattern.findall(text)return results#提取所有年龄内容
age=[]
for i in cv_list:a=extract_age(i)age.append(a)
print(age)


上面的代码,返回的每一个结果都带了[],并且有的是空值
接下来用个if…else…语句将所需要的内容提取出来,并且将空值标成NA

age=[]
for i in cv_list:a=extract_age(i)if len(a): b=a[0]else: b='NA'age.append(b)
print(age)#将内容合并到表格中
df['年龄']=age
df

文档格式不一致

基于之前的步骤,处理格式不同的文档可以有两种解法:
方法一:提取文本内容后,先格式调整成一样,再提取文本。
方法二:设置不同的格式提取

方法二只适合处理文本格式不复杂,并且不同格式比较少的情况。如果处理的文件格式多样,比如提取简历内容,因为每个人的简历格式不同,批量处理则非常麻烦。

这个例子里,从网上取了两个不同的简历模版,虽然主体内容大致相同,都是年龄、工作经历等信息,但是由于格式不一样,提取所需的文字就比较复杂。比如左边aaaa文档的时间格式是YYYY.MM, 而另一个为YYYY/MM

文档aaaa 文档
#提取文档aaaa的教育经历
def extract_eduZ(filepath):text = docx2txt.process(filepath)#删除时间符号datepat=re.compile(r'\t(\d+).(\d+)')str=datepat.sub(r'\1/\2',text)datepat=re.compile(r'(\d+).(\d+)')str=datepat.sub(r'\1/\2',str) #删空格 str = re.sub("[ ]", "", str) result=re.findall( "教育经历\n\n\d\d\d\d/\d+-(.+?)\xa0\xa0", str, re.S)return result#提取格式为YYYY/M的时间
def extract_edu(filepath):text = docx2txt.process(filepath)results=re.findall( "教育经历\n\n\d\d\d\d/\d+-(.+?)\n\n", text, re.S) return results# 提取所有文件的内容
eduA=[]
for i in cv_list:#第一个if 用来更换查找格式if 'aaaa' in i:  #找出路径名称里有‘aaaa'的文件a= extract_eduZ(i)else: a=extract_edu(i)#第二个if转换结果内容if len(a): b=a[0]else: b='NA'eduA.append(b)
print(eduA)# 合并并查看结果
df['时间']=eduA
df

3. 总结

主要难点:

  • 不同格式文档的处理
  • 正则表达式的应用。

Python提取多个docx文本内容相关推荐

  1. python 下载网页文件_『如何用python把网页上的文本内容保存下来』python爬取网页内容教程...

    python爬虫:如何爬网页数据并将其放在文本 用requests库 r=r.requests.get(url) r.concent 保存到文件里就行了 如何用python把网页上的文本内容保存下来 ...

  2. vba listbox 内容输出到文本_利用剪贴板提取工作表的文本内容

    大家好,我们今日讲解"VBA信息获取与处理"教程中第十二个专题"VBA中剪贴板(Clipboard)的应用"的第六节"利用剪贴板提取工作表的文本内容& ...

  3. python写入、读取txt文本内容

    python写入.读取txt文本内容 一. 写入txt文本文件 # 保存数据 def writeData(datalist,savepath):for data in datalist:with op ...

  4. python提取p标签的文本_从p标签获取文本内容

    我正在尝试获取此页面上每个块的描述文本内容 用于p标签的html看起来像 http://DataMiningBlog.com  covers current challenges, interview ...

  5. python提取word表格里的内容_python读取word表格 python中如何将word表格内的内容进行替换...

    python如何获取word文件中某个关键字之后的表格一片春愁待酒浇.江上舟摇,楼上帘招.秋娘度与泰娘娇.风又飘飘,雨又萧萧.何日归家洗客袍?银字笙调,心字香烧.流光容易把人抛.红了樱桃,绿了芭蕉. ...

  6. python html转TXT python读取html指定区域文本内容转成txt文件

    1.首先,通过python,去将读取遍历程序目录文件夹中,[html]文件夹里面的文件.文件 夹以及子目录.子目录里面的 ,获取到该目录下所有的[.html]文件后,返回一个list对象 2.遍历完成 ...

  7. 文本分类和提取关键词算法_文本内容之间的关键词提取和相似度计算

    文本分类和提取关键词算法 背景 Web应用程序变得越来越智能. 从网站上使用服务的日子已经一去不复返了,用户不得不填写一个巨大的表格. 假设您有一个适合书迷的网站. 在Web 2.0之前,像这样的网站 ...

  8. python 提取txt某一段内容_(转)提取TXT文本中指定内容——python

    项目介绍: 在PYTHON的计算机二级考试中有这么一个题,要求我们从一个文本中按照特定的格式提取指定内容. 文件名称为"论语-网络版.txt",其内容采用如下格式组织: [原文] ...

  9. Python提取PDF表格及文本!(附源码)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取 Python免费学习资料 ...

最新文章

  1. 95%PyTorch库都会中招的bug!特斯拉AI总监都没能幸免
  2. java菜单栏的功能怎么被关闭_【求助帖】 菜单栏的监听问题
  3. 爬虫Selenium报错“cannot find Chrome binary“解决方案
  4. 电气:6机30节点经济调度(考虑负荷平衡和线路容量,不考虑斜坡)代码实现
  5. ECMAScript 6新特性简介
  6. 用计算机求函数公式,计算机常用的函数公式有哪些?
  7. QT.pro工程文件中判断宏定义是否存在
  8. Coursera, Big Data 3, Integration and Processing (week 1/2/3)
  9. 【Vue】Nodejs下载与安装
  10. linux安装富士施乐打印机驱动下载,linux s1810打印机驱动肿么安装
  11. 【开源电机驱动】H桥的安全保护机制
  12. 【二〇二一·立春】读书笔记
  13. java happen-before_Java happen-before规则
  14. 截止频率的估算-例题
  15. 瀚高数据库故障诊断指导方案
  16. 超详细Redis入门教程——Redis 的安装与配置
  17. java 水印排版_java图片加水印代码 最好有实例!!!先谢了!!
  18. 我的世界服务器怎么设置自动拾取,我的世界自动拾取mod
  19. beego框架搭建遇到问题
  20. 上白泽慧音——tarjian

热门文章

  1. 若依ruoyiAOP切面用于数据过滤和权限处理实例
  2. 简易编译器实现(二)使用Bison创建语法分析器
  3. HTML5 canvas 详细
  4. FD的设置和抓取python请求包
  5. 下一代互联网与通信技术IPV6
  6. 如何解决WIFI 出现感叹号的问题 即无法连接上wifi的解决方案
  7. 现在假定初始在第一站的时候公车上有k个人,以后每经过一站车上的人先下去一半ki/2(ki除2的整数部分),然后再上ki人,现在已知公车的限乘人数L,假定公车如果不能再上人就(即ki-ki/2+ki
  8. 逻辑运算和逻辑表达式
  9. 图像处理中二值图像边界提取
  10. printPreviewControl1 打印预览