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)