python 如何按照word顺序遍历每一段落(包括段落的自动编号)和每一个表格

网上参考一段代码可以按照顺序判断每一段是text还是table,可以依次进行判断:

from docx import Document
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, _Row, Table
from docx.text.paragraph import Paragraph

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(document): # 按照文章顺序进行遍历
        if isinstance(block, Paragraph): # 如果是文本
                    // 遍历段落文本,但是无法识别word自动编号的编号如,1. aa,(2) .aa 中的1,(2)
        elif isinstance(block, Table) : # 如果是表格
                    // 读取表格,暂时没有问题

通过调试bock属性,暂时没有发现编号的信息,不知如何实现呢?

使用docx读取段落自动编号比较麻烦,可以用另一个库docx2python,读取成列表,分级编号无论是数字还是字母都能读取出来

from docx2python import docx2python
document = docx2python("t0222.docx")
print(document.body)

你看看这个能否解决
https://blog.csdn.net/weixin_40946032/article/details/117260641

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632