游乐游手机版
首页/编程语言/文章详情

Python实现精准提取Word文档文本与表格的完整指南

时间:2026-06-11 06:56
Spire DocforPython可精准提取Word文档中的文本与表格。通过GetText()方法获取全文并写入TXT文件;遍历节与表格层级,将单元格内容以制表符分隔保存为独立文件。注意免费版存在段落与表格数量限制,合并单元格需额外处理。

在日常数据处理工作中,从Word文档里提取结构化内容——尤其是正文文本和表格数据——几乎是一项不可避免的需求。Python生态中虽然有许多选择(比如大家熟悉的python-docx),可一旦文档排版变得复杂,或者需要同时处理表格和正文时,Spire.Doc for Python就显得更加稳定,功能也更为全面。接下来我们将一步步演示如何提取Word文本(保存为TXT文件)以及如何自动导出表格数据。

Python实现精准提取Word文档中的文本与表格

一、准备工作:安装与授权

Spire.Doc for Python 是一个非常好用的Word操作库,无论是.doc还是.docx格式都能轻松处理。安装过程也很简单:

pip install spire.doc

默认情况下它以免费模式运行,不过当处理超过500个段落或25个表格时,会自动添加评估水印。处理小文档或进行测试时完全够用,如果要在生产环境部署,可以申请临时授权或直接购买商业许可。

二、提取全部文本并写入TXT文件

官方提供的 GetText() 方法原本用于将文本输出到控制台,但在实际工作中我们通常需要将其保存为文件。以下代码实现了读取Word全文,并将内容写入指定的 .txt 文件:

from spire.doc import *
from spire.doc.common import *

# 创建Document实例并加载Word文档
doc = Document()
doc.LoadFromFile("input.docx")

# 获取整个文档的纯文本内容
full_text = doc.GetText()

# 将文本写入txt文件
with open("output.txt", "w", encoding="utf-8") as file:
    file.write(full_text)

doc.Close()
print("文本提取完成,已保存至 output.txt")

代码要点说明

  • GetText() 会按阅读顺序提取段落、标题、页眉页脚等所有文本内容,而图片和图形等元素会被忽略。
  • 写入时指定 utf-8 编码,可有效避免中文乱码问题。
  • 操作完成后记得调用 doc.Close() 释放资源,防止内存泄漏。

三、精确提取并导出所有表格

Word文档中的表格通常包含关键数据,比如报表、清单等。Spire.Doc 提供了清晰的层级结构:文档 → 节(Section) → 表格(Table) → 行 → 单元格 → 段落。下面的代码会遍历每个节中的所有表格,将每个表格单独保存成一个 .txt 文件(使用制表符分隔,便于后续导入Excel):

from spire.doc import *
from spire.doc.common import *
import os
# 创建输出文件夹
output_dir = "output/Tables"
os.makedirs(output_dir, exist_ok=True)
# 加载Word文档
doc = Document()
doc.LoadFromFile("Sample.docx")
# 遍历所有节
for section_idx in range(doc.Sections.Count):
    section = doc.Sections.get_Item(section_idx)
    tables = section.Tables
    for table_idx in range(tables.Count):
        table = tables.get_Item(table_idx)
        table_data = ""
        # 遍历表格所有行和单元格
        for row_idx in range(table.Rows.Count):
            row = table.Rows.get_Item(row_idx)
            for col_idx in range(row.Cells.Count):
                cell = row.Cells.get_Item(col_idx)
                # 收集单元格内所有段落文本
                cell_text = ""
                for para_idx in range(cell.Paragraphs.Count):
                    cell_text += cell.Paragraphs.get_Item(para_idx).Text + " "
                table_data += cell_text.strip()
                # 列之间用制表符分隔
                if col_idx < row.Cells.Count - 1:
                    table_data += "t"
            table_data += "n"   # 行结束
        # 保存当前表格数据
        output_path = f"{output_dir}/WordTable_{section_idx+1}_{table_idx+1}.txt"
        with open(output_path, "w", encoding="utf-8") as f:
            f.write(table_data)
        print(f"已保存:{output_path}")
doc.Close()

代码解析

  • 多层循环确保不遗漏任何表格(注意:Spire.Doc 中表格可能嵌套在单元格内,此示例只处理顶层表格,若遇到深层嵌套可改为递归方式处理)。
  • 通过遍历单元格的 Paragraphs 集合获取内容,可以避免丢失换行或样式分隔信息。
  • 输出文件名按“节索引_表索引”命名,清晰且便于追溯。

四、整合应用与注意事项

1. 性能与内存

处理大文档(数百页)时应按需操作:如果只需要表格,就不要提取文本;反之亦然。doc.Close() 必须执行,否则可能导致句柄泄漏。

2. 表格合并单元格的处理

表格中存在跨行或跨列合并的情况时,上述代码仍能正常提取每个单元格的文本,但输出的纯文本结构会丢失合并关系。若希望保留行列结构,可以借助 Cell.ColumnSpanRowSpan 属性来构建标记矩阵。

3. 免费版限制

未经授权的 Spire.Doc 最多只能处理10页文档中的前3页(或500个段落)。建议先用小文档验证逻辑,生产环境中要么购买授权,要么采用分页读取策略来绕过限制。

五、总结

借助 Spire.Doc for Python,仅需几十行代码即可完成Word文本与表格的批量提取。上面提供的两个核心函数——文本写入TXT和表格逐表导出——可以直接嵌入到自己的数据处理流水线中。再结合Python的文件操作以及后续分析(例如使用pandas读取表格txt),构建一个文档解析自动化系统并不困难。

遇到复杂文档布局或表格合并单元格等特殊需求时,Spire.Doc 还提供了 ExportToHtmlSa veToFile 等丰富接口,值得进一步探索。在实际项目中灵活运用这些功能,文档处理将变得更加省心高效。

来源:https://www.jb51.net/python/365384q5h.htm
上一篇使用Python旋转PDF页面的多种方法与实用技巧教程 下一篇Python自动生成动态分析报告PPT与PDF
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Linux环境下Node.js单元测试方法详解
编程语言 · 2026-06-11

Linux环境下Node.js单元测试方法详解

在Linux环境下对Node js项目进行单元测试,主流框架有Mocha、Jest和Jasmine。以Mocha为例,需先安装Node js与npm,创建package json,安装Mocha为开发依赖,建立test文件夹,编写测试用例,使用describe定义测试套件、it定义测试用例、assert断言。最后在scripts中添加test命令,通过npm

如何在Linux上全面管理Node.js依赖的实用步骤与技巧
编程语言 · 2026-06-11

如何在Linux上全面管理Node.js依赖的实用步骤与技巧

在Linux系统上,Node js依赖管理通过npm或Yarn进行,利用package json记录依赖,配合锁定文件确保版本一致。操作包括安装工具、初始化项目、安装生产与开发依赖、更新删除依赖、提交锁定文件、最小化依赖、安全审计及使用nvm管理Node js版本。

深入剖析Linux环境下ThinkPHP框架的安全风险及应对策略
编程语言 · 2026-06-11

深入剖析Linux环境下ThinkPHP框架的安全风险及应对策略

Linux环境下ThinkPHP安全取决于版本、配置与开发习惯。旧版存在preg_replace漏洞、控制器过滤不严及SQL注入风险;配置疏漏如开启调试模式、未强制路由等削弱防护。升级至6 x、关闭调试、禁用危险函数、开启强制路由、使用ORM、限制文件上传、配置防火墙与HTTPS可有效提升安全性。框架、系统、开发三位一体方能构建可靠防护。

Linux下JavaScript性能优化高效实现
编程语言 · 2026-06-11

Linux下JavaScript性能优化高效实现

在Linux环境下,JavaScript性能优化需从运行时环境、代码写法、并发处理、缓存策略、数据库优化、网络优化、监控分析、安全部署及代码分割等多环节进行迭代改进,持续精准解决性能瓶颈。

全面详解Node.js在Linux系统中的安全性保障与最佳实践
编程语言 · 2026-06-11

全面详解Node.js在Linux系统中的安全性保障与最佳实践

在Linux环境部署Node js应用,需从系统内核加固、服务精简、依赖审计、HTTPS加密、输入验证、权限分离、敏感信息管理及监控应急响应等多个环节进行系统安全防护,构建纵深防御体系,保障应用安全运行,确保系统稳健可靠。