docx顺序遍历所有

table paragraph的基类都是相同的,可以利用这一点。

1
2
3
4
5
doc.tables[0].__class__.__bases__
(<class 'docx.shared.Parented'>,)

doc.paragraphs[0].__class__.__bases__
(<class 'docx.shared.Parented'>,)

基类相同,但是子类不同,由此可以区分,所以这样写:

1
2
3
4
5
6
7
8
9
10
from docx.shared import Parented
from docx.table import Table
from docx.text.paragraph import Paragraph


for element in doc.element.body:
if isinstance(element,Table):
#对表格处理
elif isinstance(element,Paragraph):
#对文字处理