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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值