如何用Python Docx高亮合并Docx版本后的插入/删除文本
仅高亮Docx中插入/删除文本的实现方案
原代码的问题在于仅通过段落级别的XML判断是否存在修改,随后高亮整个段落的所有文本。要实现仅高亮被插入或删除的目标文本,需要针对每个文本片段(run)单独检查其修改标记:
from docx import Document from docx.enum.text import WD_COLOR_INDEX def highlight_revised_text(paragraph): # 遍历段落内的每个文本片段(run) for run in paragraph.runs: run_xml = run._t.xml # 检查当前run是否属于插入或删除的内容 if "w:del" in run_xml or "w:ins" in run_xml: run.font.highlight_color = WD_COLOR_INDEX.PINK # 调用示例 doc = Document("待处理文档.docx") for para in doc.paragraphs: highlight_revised_text(para) doc.save("高亮后文档.docx")
说明:
- 每个
run是Docx中最小的文本样式单元,修改标记(w:ins/w:del)会绑定在对应的run上 - 代码直接检查单个run的XML内容,仅对包含修改标记的run设置高亮,精准定位目标文本
- 执行前确保已安装依赖库:
pip install python-docx
内容的提问来源于stack exchange,提问作者KarSho
相关产品推荐
相关产品推荐

