如何在 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()
函数以适应您的用例,因此最好仔细研究它以基本了解其工作原理。
我构建了一个脚本,用于修改导入的 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()
函数以适应您的用例,因此最好仔细研究它以基本了解其工作原理。