如何在python-docx中为修改后的段落设置加粗格式
问题解决方法
失效原因
- 直接修改段落的
text属性会清空该段落内所有带格式的文本块(Run),替换为无格式的纯文本,因此原有加粗属性会丢失 - 第二段代码中的
run变量未声明指向具体的文本块对象,赋值操作无效;格式属性是绑定到单个文本块(Run),而非整个段落对象,直接给未定义的run设置属性不会生效
可用实现代码
from docx import Document document = Document('filename.docx') # 替换映射字典,注意替换值需要是字符串类型,添加引号 replace_map = {'XxwordxX': '你要替换的目标文字'} for para in document.paragraphs: # 遍历段落内的所有文本块,仅替换文本内容,保留原有格式 for run in para.runs: for old_str, new_str in replace_map.items(): if old_str in run.text: run.text = run.text.replace(old_str, new_str) # 若需要主动将指定段落全部设置为加粗,取消注释下方代码即可 # target_para = document.paragraphs[2] # for run in target_para.runs: # run.bold = True document.save('new.docx')
特殊场景说明
如果需要替换的关键词被拆分到了多个连续的Run中,上述方法无法匹配到关键词,可先读取段落完整文本做替换,再按原有格式重建Run,常规场景下无需额外处理。
内容的提问来源于stack exchange,提问作者RandallCloud
相关产品推荐
相关产品推荐

