0

0

如何用Python解析Word文档(.docx)中的XML数据

畫卷琴夢

畫卷琴夢

发布时间:2025-12-18 13:08:02

|

353人浏览过

|

来源于php中文网

原创

Python通过python-docx库或手动解压.docx ZIP包来解析其内部XML文件;前者用_element.xml获取段落等原始XML,后者用zipfile+etree/lxml读取document.xml等核心文件,并需正确处理命名空间。

如何用python解析word文档(.docx)中的xml数据

Python本身不直接解析Word文档的底层XML,而是通过python-docx库操作.docx文件——因为.docx本质是ZIP压缩包,内部包含多个XML文件(如document.xmlstyles.xml等)。若需访问原始XML数据,有两种主流方式:一是用python-docx间接获取XML片段;二是手动解压.docx并解析目标XML文件。

python-docx提取段落/表格的XML结构

python-docx虽为高层接口,但每个元素(如ParagraphRun)都提供_element属性,可直接访问底层lxml Element对象,进而读取或修改其XML。

  • 安装依赖:pip install python-docx lxml
  • 读取段落XML示例:
    from docx import Document
    

    doc = Document("example.docx") p = doc.paragraphs[0] # 获取第一个段落 xml_str = p._element.xml # 返回该段落的完整XML字符串(含命名空间) print(xml_str[:200]) # 查看前200字符

  • 注意:_element.xml返回的是带namespaces的原始XML,可能含w:前缀(如

    ),解析时需处理命名空间或用lxml的XPath配合{http://schemas.openxmlformats.org/wordprocessingml/2006/main}

手动解压.docx并读取核心XML文件

.docx是ZIP格式,可用Python内置zipfile模块解压,再用xml.etree.ElementTreelxml解析指定XML。

  • 关键XML路径(在解压后目录中):
    • word/document.xml:主文档内容(段落、文字、制表符等)
    • word/styles.xml:样式定义
    • word/numbering.xml:编号与项目符号规则
    • word/settings.xml:文档设置
  • 示例:提取document.xml中的所有段落文本(忽略格式):
    import zipfile
    import xml.etree.ElementTree as ET
    

    with zipfile.ZipFile("example.docx") as docx: with docx.open("word/document.xml") as f: tree = ET.parse(f) root = tree.getroot()

    Word XML默认命名空间

        ns = {"w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main"}
        for p in root.findall(".//w:p", ns):
            text = "".join(t.text for t in p.findall(".//w:t", ns) if t.text)
            print(text.strip())

    立即学习Python免费学习笔记(深入)”;

    Android数据格式解析对象JSON用法 WORD版
    Android数据格式解析对象JSON用法 WORD版

    本文档主要讲述的是Android数据格式解析对象JSON用法;JSON可以将Java对象转成json格式的字符串,可以将json字符串转换成Java。比XML更轻量级,Json使用起来比较轻便和简单。JSON数据格式,在Android中被广泛运用于客户端和服务器通信,在网络数据传输与解析时非常方便。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看

    下载

用lxml做深度XML分析(推荐用于复杂需求)

当需XPath查询、命名空间灵活处理、或修改后重新打包时,lxml标准库更强大。

  • 安装:pip install lxml
  • 读取并查询带样式的段落:
    from lxml import etree
    import zipfile
    

    with zipfile.ZipFile("example.docx") as docx: with docx.open("word/document.xml") as f: tree = etree.parse(f)

    使用XPath查找所有应用了"Heading1"样式的段落

        ns = {"w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main"}
        headings = tree.xpath("//w:p[w:pPr/w:pStyle[@w:val='Heading1']]", namespaces=ns)
        for h in headings:
            text = "".join(h.xpath(".//w:t/text()", namespaces=ns))
            print("标题:", text.strip())

    立即学习Python免费学习笔记(深入)”;

  • 修改XML后,可调用tree.write()保存,并用zipfile重建.docx(需保留其他文件结构)。

注意事项与常见问题

直接操作XML有风险,务必备份原文件;且Word生成的XML结构较复杂,嵌套深、命名空间多。

  • 命名空间必须匹配:OpenXML规范强制使用w:等前缀,XPath或find操作必须声明对应URI,否则查不到节点。
  • 中文乱码XML本身是UTF-8编码zipfile.open()返回bytes,etree.parse()lxml.etree.parse()能自动识别,无需手动decode。
  • 图片、页眉页脚在哪?图片存在word/media/,页眉页脚在word/header.xml/footer.xml,需单独解压读取。
  • 不建议从零构建.docx:手动拼XML易出错,优先用python-docx生成,仅在特殊分析场景才深入XML层。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

343

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

419

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

769

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

353

2025.07.23

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1911

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2095

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1096

2024.11.28

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1235

2023.10.19

抖音网页版入口与视频观看指南 抖音官网视频在线访问
抖音网页版入口与视频观看指南 抖音官网视频在线访问

本专题汇总了抖音网页版的入口链接、官方登录页面以及视频观看入口,帮助用户快速访问抖音网页版,提供免登录访问方式和直接进入视频播放页面的方法,确保顺利浏览和观看抖音视频。

19

2026.02.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

Django 教程
Django 教程

共28课时 | 3.9万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号