def iter_block_items(parent): """ Generate a reference to each paragraph and table child within *parent*, in document order. Each returned value is an instance of either Table or Paragraph. *parent* would most commonly be a reference to a main Document object, but also works for a _Cell object, which itself can contain paragraphs and tables. """ if isinstance(parent, _Document): parent_elm = parent.element.body # print(parent_elm.xml) elif isinstance(parent, _Cell): parent_elm = parent._tc 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) 我可以获取文档图像的有序列表: pictures = [] for pic in dwo.inline_shapes: if pic.type == WD_INLINE_SHAPE.PICTURE: pictures.append(pic) 我可以在段落末尾插入特定图像: def insert_picture(index, paragraph): inline = pictures[index]._inline rId = inline.xpath('./a:graphic/a:graphicData/pic:pic/pic:blipFill/a:blip/@r:embed')[0] image_part = dwo.part.related_parts[rId] image_bytes = image_part.blob image_stream = BytesIO(image_bytes) paragraph.add_run().add_picture(image_stream, Inches(6.5)) return 我像这样使用函数 iter_block_items(): start_copy = False for block in iter_block_items(document): if isinstance(block, Paragraph): if block.text == "TEXT FROM WHERE WE STOP COPYING": break if start_copy: if isinstance(block, Paragraph): last_paragraph = insert_paragraph_after(last_paragraph,block.text) elif isinstance(block, Table): paragraphs_with_table.append(last_paragraph) tables_to_apppend.append(block._tbl) if isinstance(block, Paragraph): if block.text == ""TEXT FROM WHERE WE START COPYING": start_copy = True
标签:段落,docx,parent,python,image,paragraph,child,isinstance,block From: https://www.cnblogs.com/QQ-77Ly/p/17682352.html