gpt4 book ai didi

python-docx:在后面插入一段

转载 作者:太空宇宙 更新时间:2023-11-04 08:36:17 25 4
gpt4 key购买 nike

在 python-docx 中,paragraph 对象有一个方法 insert_paragraph_before允许在自身之前插入文本:

p.insert_paragraph_before("This is a text")

没有 insert_paragraph_after 方法,但我认为段落对象充分了解自身,可以确定列表中的下一个段落。不幸的是,python-docx AST 的内部工作原理有点复杂(并且没有真正记录)。

我想知道如何使用以下规范编写函数?

def insert_paragraph_after(para, text):

最佳答案

试图理解 docx 的内部工作原理让我头晕目眩,但幸运的是,它很容易完成你想要的,因为内部对象已经有了必要的方法 addnext,这就是全部我们需要:

from docx import Document

from docx.text.paragraph import Paragraph
from docx.oxml.xmlchemy import OxmlElement

def insert_paragraph_after(paragraph, text=None, style=None):
"""Insert a new paragraph after the given paragraph."""
new_p = OxmlElement("w:p")
paragraph._p.addnext(new_p)
new_para = Paragraph(new_p, paragraph._parent)
if text:
new_para.add_run(text)
if style is not None:
new_para.style = style
return new_para

def main():
# Create a minimal document
document = Document()
p1 = document.add_paragraph("First Paragraph.")
p2 = document.add_paragraph("Second Paragraph.")

# Insert a paragraph wedged between p1 and p2
insert_paragraph_after(p1, "Paragraph One And A Half.")

# Test if the function succeeded
document.save(r"D:\somepath\docx_para_after.docx")

if __name__ == "__main__":
main()

关于python-docx:在后面插入一段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48663788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com