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

标签 python python-3.x python-docx

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

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')

不幸的是,修改该单词的段落不再是粗体(在文件名中是粗体)。

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

我尝试过这个:

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() 函数以适合您的用例,因此最好足够仔细地研究它,以了解其基本工作原理。

关于python - 如何在 python docx 中将修改的段落加粗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69710352/

相关文章:

python - 具有二维值和索引数组的 numpy 二维数组赋值

python - 在 Django 中处理 subprocess.call()

python - 具有 1 个和 2 个可迭代元素的列表的字典理解

python - 如何在 Python 中生成 DOCX 并将其保存在内存中?

python - 你如何在 python-docx 中将表行保持在一起?

python - SublimeCodeIntel 和 PyQ4

python - lxml 中的 POST 方法表单使用 submit_form 引发 TypeError

python - 在内置函数中赋值

python - 如何更改 python 3 pandas.DataFrame 的表形式?

python-docx - 如何重新启动列表刻字