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

如何用Python获取Word(.docx)文档中文本框的文本内容

解决docx文本框内容获取问题

你的代码没返回结果,核心原因是没有处理XML命名空间。docx的document.xml里所有元素都绑定了不同的命名空间(比如w、mc、v这些前缀),直接写绝对XPath路径会因为找不到对应命名空间的元素而返回空列表。

修复步骤:

  • 先定义docx用到的命名空间字典,把前缀和对应的官方URL绑定
  • 用更灵活的XPath路径(避免绝对路径的局限性),同时传入命名空间参数

修改后的代码:

import docx

doc = docx.Document("documento.docx")

# 定义docx相关的命名空间映射
namespaces = {
    'w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',
    'mc': 'http://schemas.openxmlformats.org/markup-compatibility/2006',
    'v': 'urn:schemas-microsoft-com:vml'
}

# 用相对路径匹配所有文本框内的w:t元素,更通用
textbox_text_elements = doc.element.xpath('//v:textbox//w:txbxContent//w:t', namespaces=namespaces)

# 提取每个元素的文本内容
textbox_text = [elem.text for elem in textbox_text_elements]

print(textbox_text)

补充说明:

  1. 绝对路径/w:document/w:body/w:p/w:r/...太严格,实际文档中文本框的嵌套结构可能有变化,用//可以匹配任意层级的对应元素,适用性更强。
  2. 最后要从返回的lxml元素中提取.text属性才能拿到实际文本,原代码直接打印元素对象也看不到内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:15:57