首页 > 解决方案 > 如何用另一个替换段落?

问题描述

我想用另一个 docx 文件中的另一个表替换该表。在搜索过程中,我发现了向下吹可以轻松删除整个表格(段落)的方法。

doc = docx.Document('test.docx')

def delete_paragraph(paragraph):
  p = paragraph._element
  p.getparent().remove(p)
  p._p = p._element = None

delete_paragraph(doc.table[3])

所以,我想它也可以更换。

我尝试编写代码:

doc = docx.Document('test.docx')
stand = docx.Document('stand.docx')

def replace_paragraph(p1, p2):
  p1.element = p2._element

replace_paragraph(doc.tables[3],stand.tables[0])

但它没有用。我能怎么做 ?

===更新===

我发现了另一种方法。

from copy import deepcopy

def copy_table_after(table, paragraph):
  tbl, p = table._tbl, paragraph._p
  new_tbl = deepcopy(tbl)
  p.addnext(new_tbl)

先用delete_paragraph删除旧表,再用copy_table_after复制新表。

但是,这种方式必须知道旧表的段落位置。

如果有人知道更好的方法,请告诉我,谢谢。

标签: pythondocxpython-docx

解决方案


推荐阅读