如何在 python docx 中加粗修改后的段落

How to bold a modified paragraph in python docx

我构建了一个脚本,用于修改导入的 word 文件中的某些单词。

from docx import Document

document = Document('filename.docx')

paragraphs = document.paragraphs

dic = {'XxwordxX': modifiedword}

for p in document.paragraphs:
    for key in dic.keys():
        if key in p.text:
            p.text = p.text.replace(key,dic[key])

document.save('new.docx')

不幸的是,单词被修改的段落不再是粗体(在 filename 中是粗体)。

而且我找不到如何再次将其加粗。

我试过了:

from docx import Document

document = Document('filename.docx')

paragraphs = document.paragraphs

dic = {'XxwordxX': modifiedword}

for p in document.paragraphs:
    for key in dic.keys():
        if key in p.text:
            p.text = p.text.replace(key,dic[key])

para = document.paragraphs[2] 
run.bold = True

document.save('new.docx')

但是即使我没有任何错误,该段落在输出中也不是粗体。

知道怎么做吗?我在网上找到的唯一提示是手动添加粗体段落。

我认为您正在寻找类似 paragraph_replace_text() 函数的解决方案:
https://github.com/python-openxml/python-docx/issues/30#issuecomment-879593691

问题是替换 Paragraph.text 会删除段落中的所有运行,并将它们替换为具有默认格式的单个段落。这通常很方便,但在“保留格式的同时替换文本”的情况下还不够。

关于该代码片段的文档非常详尽,后面的评论提供了一些进一步的解释。您可能需要调整 paragraph_replace_text() 函数以适应您的用例,因此最好仔细研究它以基本了解其工作原理。