如何用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)
补充说明:
- 绝对路径
/w:document/w:body/w:p/w:r/...太严格,实际文档中文本框的嵌套结构可能有变化,用//可以匹配任意层级的对应元素,适用性更强。 - 最后要从返回的lxml元素中提取
.text属性才能拿到实际文本,原代码直接打印元素对象也看不到内容。
内容的提问来源于stack exchange,提问作者Mystic_Force
相关产品推荐
相关产品推荐

