You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用python-docx高亮Word文档中的超链接?求代码解决方案

解决python-docx无法识别并高亮Word超链接的方案

由于python-docx对Word超链接的高层封装有限,无法直接通过API识别超链接,我们可以直接操作文档的底层XML结构来实现高亮效果:

实现代码

from docx import Document
from docx.shared import RGBColor

def highlight_hyperlinks(doc_path, output_path, highlight_color=RGBColor(255, 255, 0)):
    doc = Document(doc_path)
    # 遍历文档所有段落
    for para in doc.paragraphs:
        para_element = para._element
        # 定位所有超链接XML节点
        hyperlinks = para_element.findall(".//w:hyperlink", namespaces=para_element.nsmap)
        for hyperlink in hyperlinks:
            # 遍历超链接内的所有文本运行单元
            runs = hyperlink.findall(".//w:r", namespaces=para_element.nsmap)
            for run in runs:
                # 获取或创建文本属性节点
                rpr = run.find("w:rPr", namespaces=para_element.nsmap)
                if rpr is None:
                    rpr = para_element._new_rPr()
                    run.insert(0, rpr)
                # 创建高亮节点并设置颜色
                highlight = para_element._new_highlight()
                highlight.set(para_element.nsmap['w']+"val", "yellow")
                # 若需自定义RGB颜色,可替换为以下代码
                # color = para_element._new_color()
                # color.set(para_element.nsmap['w']+"rgb", f"{highlight_color.r:02X}{highlight_color.g:02X}{highlight_color.b:02X}")
                # highlight.append(color)
                rpr.append(highlight)
    # 保存修改后的文档
    doc.save(output_path)

# 使用示例
highlight_hyperlinks("input.docx", "output.docx")

关键说明

  • 该方法通过直接定位Word OOXML中的<w:hyperlink>节点识别超链接,绕过python-docx的API局限
  • 默认设置黄色高亮,可通过修改参数或XML节点属性自定义高亮颜色
  • 手动插入的普通超链接均可正常识别,若为动态字段生成的超链接,需额外处理字段节点逻辑

内容的提问来源于stack exchange,提问作者Harshitha S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 07:47:09