IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python如何实现Word文件批量信息提取与结构化解析 -> 正文阅读

[Python知识库]Python如何实现Word文件批量信息提取与结构化解析

数据示例:

文件内容分为两部分,一种为表格形式

Python如何实现Word文件批量信息提取与结构化解析

Word中的第一个表格

一种为文本段落形式

Python如何实现Word文件批量信息提取与结构化解析

Word文件中需要结构化处理的内容

需求:

将表格中文本进行提取,第一列为字段名,第二列为数据内容

将段落中的内容按照符号【字段】内容 对应关系转为表格

处理步骤:

from docx import Document
import pandas as pd

path = "./data/保健食品备案/食健备G201845001742.docx"
docx = Document(path)

表格处理

    table=table_s[0]
    
    dic_data={}
    for i in range(0,len(table.rows)):
        title=table.cell(i, 0).text
        data=table.cell(i, 1).text
        dic_data[title]=data

文本处理

  • 正则匹配日期
pattern = re.compile(r'\d+年\d+月\d+日')   # 查找日期
for page in pages:
    print(page.text)
    if pattern.match(page.text):
        break

Python如何实现Word文件批量信息提取与结构化解析

正则日期匹配

  • 正则匹配字段与内容
# 正则表达式
line='''【原料】醋酸视黄酯,维生素D3,维生素K2 (发酵法),D-α-生育酚【辅料】大豆油,明胶,纯化水,甘油,焦糖色,二氧化钛,玉米油,拧檬黄铝色淀, 二丁基羟基甲苯(BHT)【功效成分及含量】每粒含:维生素A 223.0μg维生素D3 8.4μg维生素K2 34.0μg 维生素 E 5.0mg【适宜人群】需要补充多种维生素的4-17岁人群【不适宜人群】3岁以下人群及孕妇、乳母【保健功能】补充多种维生素【食用量及食用方法】每日1次,每次1粒,食用方法:口服 【规格】0.5 g/粒【贮藏方法】密封,置阴凉干燥处【保质期】24个月【注意事项】本品不能代替药物。适宜人群外的人群不推荐食用本产品。 不宜超过推荐量或与同类营养素同时食用'''

pattern = re.compile(r'(【.+?】)([^】【]+)')   # 正则
result1 = pattern.findall(line)
result1

Python如何实现Word文件批量信息提取与结构化解析

正则提取字段与内容

  • 完整代码
    # 解析文本
    pages = docx.paragraphs
    
    # 获取日期
    def get_date(pages):
        pattern = re.compile(r'\d+年\d+月\d+日')   # 查找数字
        for page in pages:
            if pattern.match(page.text):
                break
        return page.text
    dic_data['日期']=get_date(pages)
    
    # 判断文本范围
    def get_num(pages):
        num=0
        for page in pages:
            if page.text=='附件2':
                break
            else:
                num=num+1
        return num
    
    t=[]
    for i in pages[1:get_num(pages)]:
        t.append(i.text)
    line=''.join(t) # 得到长文本
    
    pattern = re.compile(r'(【.+?】)([^】【]+)')   # 正则
    result = pattern.findall(line)
    
    for j in result:
        dic_data[j[0]]=j[1]

单个文件处理函数封装

def Word_Extract_Contents(path):
    # 解析第一个表格
    docx = Document(path)
    table_s = docx.tables
    table=table_s[0]
    
    dic_data={}
    for i in range(0,len(table.rows)):
        title=table.cell(i, 0).text
        data=table.cell(i, 1).text
        dic_data[title]=data
        
    # 解析文本
    pages = docx.paragraphs
    
    # 获取日期
    def get_date(pages):
        pattern = re.compile(r'\d+年\d+月\d+日')   # 查找数字
        for page in pages:
            if pattern.match(page.text):
                break
        return page.text
    dic_data['日期']=get_date(pages)
    
    # 判断文本范围
    def get_num(pages):
        num=0
        for page in pages:
            if page.text=='附件2':
                break
            else:
                num=num+1
        return num
    
    t=[]
    for i in pages[1:get_num(pages)]:
        t.append(i.text)
    line=''.join(t) # 得到长文本
    
    pattern = re.compile(r'(【.+?】)([^】【]+)')   # 正则
    result = pattern.findall(line)
    
    for j in result:
        dic_data[j[0]]=j[1]
    
    
    
    df=pd.DataFrame([dic_data])
    return df

获取文件夹文件目录

# 获取文件夹中的文件目录
import os
paths=os.listdir('./data/保健食品备案')

数据处理与汇总

df0=pd.DataFrame()
for path in paths:
    df=Word_Extract_Contents('./data/保健食品备案/{}'.format(path))
    print(type(df))
    df0=pd.concat([df0,df],axis=0)

数据保存

df0.to_excel('./data/保健食品备案2021.07.13.xlsx',index=False)

处理结果

Python如何实现Word文件批量信息提取与结构化解析

Excel结果

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 10:49:15  更:2021-07-14 10:49:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:55:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码