如何使用Python迭代读取word中的段落、表格和图片?

复制代码
复制代码
from docx.document import Document as _Document
from docx.oxml.text.paragraph import CT_P
from docx.oxml.table import CT_Tbl
from docx.table import _Cell, Table, _Row
from docx.text.paragraph import Paragraph
import docx
path = './test.docx'
doc = docx.Document(path)

def iter_block_items(parent):
    if isinstance(parent, _Document):
        parent_elm = parent.element.body
    elif isinstance(parent, _Cell):
        parent_elm = parent._tc
    elif isinstance(parent, _Row):
        parent_elm = parent._tr
    else:
        raise ValueError("something's not right")
    for child in parent_elm.iterchildren():
        if isinstance(child, CT_P):
            yield Paragraph(child, parent)
        elif isinstance(child, CT_Tbl):
            yield Table(child, parent)

for block in iter_block_items(doc):
    # read Paragraph
    if isinstance(block, Paragraph):
        print(block.text)
    # read table
    elif isinstance(block, Table):
        print(block.style.name)
复制代码

 

复制代码
3. 访问图片

接下来,我们可以通过遍历文档中的每个段落,找到其中包含的图片。具体代码如下:

for paragraph in document.paragraphs:

for run in paragraph.runs:

if run._element.xml.startswith('

print('Found a picture!')

其中,“runs”是指段落中的一小部分文本。如果该“run”对象的XML标记以“

4. 保存图片

最后,我们可以使用Python中的“open”函数将图片保存到本地。具体代码如下:

for paragraph in document.paragraphs:

for run in paragraph.runs:

if run._element.xml.startswith('

image_name = run.part.rels[0]._target

with open(image_name, 'wb') as f:

f.write(run.part.blob)
复制代码

 



关于python - 如何使用Python迭代读取word中的段落、表格和图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55451762/
复制代码

 

posted @   祺琪  阅读(810)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示