当前位置: 首页 > article >正文

python+docx+docx2python:多文件合并,提取docx文件文本、表格及图片数据

目录

文件合并

文件数据提取

提取文本数据

读取表格数据

读取并下载图片


安装库:

pip install python-docx -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install docx2python -i https://pypi.tuna.tsinghua.edu.cn/simple

docx2python库支持快速提取文本内容和图片等数据,包含页眉页脚数据

from docx import Document
from docx2python import docx2python

文件合并

将多个docx文件合并到一个文件中

def merge_docx():
    file_path = fr'C:\Users\Administrator\Desktop\testfile\测试文件'
    file_names = ['测试文件001.docx', '测试文件002.docx', '测试文件003.docx']
    d_new = Document()

    for file_name in file_names:
        file_path_all = fr'{file_path}\{file_name}'
        docx = Document(file_path_all)
        for ele in docx.element.body:
            d_new.element.body.append(ele)

    d_new.save(fr'C:\Users\Administrator\Desktop\test.docx')

文件数据提取

提取文本数据

使用python-docx库遍历段落(不会获取页眉页脚数据,读取页眉页脚时需要使用其他方法,见:python+docx:(二)页眉页脚、表格操作-CSDN博客)

def read_par(file_path: str):  # 读取段落文字信息
    docx = Document(file_path)
    for par in docx.paragraphs:
        print(par.text)

使用docx2python库获取(获取的数据包含页眉页脚所有text类型的数据,返回一个字符串)

def read_text(file_path: str):  # 获取整个文档的文本内容,包含页眉页脚
    docx = docx2python(file_path)
    print(docx.text)

读取表格数据

def read_table(file_path: str):
    docx = Document(file_path)
    for index, table in enumerate(docx.tables):
        print(f'第{index + 1}个表的数据')
        for r, row in enumerate(table.rows):  # 遍历行docx_table.rows;遍历列docx_table.columns
            for c, cell in enumerate(row.cells):  # 迭代所有单元格
                print(cell.text, end='、')
            print()

读取并下载图片

def get_img(save_img_path: str, file_path: str):  # 获取整个文档的图片,包含页眉页脚
    docx = docx2python(file_path)
    '''
    图片是以字典的形式存储:
    {'image.png':图片数据}
    字典key为图片名称,会自动按照顺序命名,字典的value是图片的二进制字节信息
    '''
    for k, v in docx.images.items():
        with open(rf'{save_img_path}\{k}', 'wb') as f:
            f.write(v)

http://www.kler.cn/a/429905.html

相关文章:

  • 分布式一致性CAP与BASE理论、分布式一致性协议和算法——2PC、3PC 和 Paxos算法
  • d2j-dex2jar classes.dex 执行报错:not support version 问题解决
  • 硬件设计-齐纳管
  • AI开发: 知识图谱的初识,学会制作知识图谱- Python 机器学习
  • 基于python的自动化的sql延时注入脚本
  • 高级排序算法(一):快速排序详解
  • vue-resizable插件运用
  • vite+vue3 配置ip和端口以及自动打开浏览器
  • 【Linux】开机进入grub/怎么办?
  • 【Python】无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称解决方案
  • java中的数组(2)
  • unity3d—demo(2d人物左右移动发射子弹)
  • 如何使用LEADTOOLS创建.NET Core跨平台OCR应用程序
  • Scala 的正则表达式
  • 在 Vue 3 中实现点击按钮后禁止浏览器前进或后退
  • 4.STM32通信接口之SPI通信(含源码)---硬件SPI与W25Q64存储模块通信实战《精讲》
  • 【网络篇】TCP知识
  • 嵌入式驱动开发详解13(IIC驱动架构实现)
  • 掌握小程序地理位置服务插件,让用户体验再升级
  • 搭建Node.js后端
  • EasyExcel改名为FastExce做了那些改变呢
  • 【深度学习】深入解析卷积神经网络(CNNs)
  • 【语音识别】搭建本地的语音转文字系统:FunASR(离线不联网即可使用)