Python 使用 python-docx 读取与解析 Word 文档

陈默
陈默
发布时间:2026-10-12 | 1人浏览过
原创

本文详细演示如何使用 Python 的 python-docx 库加载 .docx 文件,通过 core_properties 获取作者与创建日期等元数据,遍历 paragraphs 过滤空行并提取纯文本,同时利用 runs 属性精准判断粗体与斜体样式。全程提供可运行的代码示例,适用于自动化文档解析与内容抓取场景。

操作目标与前置条件

本文将指导如何通过 Python 自动读取 Word 文档的结构与内容。开始前需确保已安装第三方库 python-docx。在终端执行以下命令完成环境准备:

$ pip install python-docx

第1步:加载 Word 文档并检查元数据

导入模块后,使用 Document() 方法载入目标文件。加载成功后即可通过 core_properties 访问内置元数据(如标题、关键词、修改时间)。需注意,并非所有 Word 文件都完整填充了这些字段,部分由工具生成的文档可能为空值。

>>> import docx
>>>> doc = docx.Document('document_1.docx')
>>>> doc.core_properties.title
'Research Overview of Adversarial Attacks and Defenses on Graphs'
>>>> doc.core_properties.keywords
'Abstract'
>>>> doc.core_properties.modified
datetime.datetime(2020, 8, 1, 3, 11)

第2步:遍历段落并筛选有效文本

Word 文档的数据按段落(paragraphs)结构化存储,而非按页。由于存在大量换行符或空白字符,直接打印会导致冗余输出。建议遍历列表时判断 paragraph.text 是否为真值,从而跳过空段落:

>>> for index, paragraph in enumerate(doc.paragraphs):
...     if paragraph.text:
...             print(index, paragraph.text)

若需精确提取特定位置的文本,可直接传入索引值。例如获取第 5 段(主标题)和第 6 段(摘要标识)的内容:

>>> doc.paragraphs[5].text
'Research Overview of Adversarial Attacks and Defenses on Graphs'
>>>> doc.paragraphs[6].text
'Abstract '
Python控制台输出显示成功读取的段落文本与元数据结果
运行脚本后在终端打印的有效段落索引与对应文本内容,可用于核对读取是否准确。

第3步:解析段落内的样式属性(Runs)

paragraph 内部进一步划分为多个 runs 对象。同一视觉样式的连续文字会被合并为一个 run,而中途改变格式的文字则会被拆分为新的 run。通过访问 run 对象的 bold 和 italic 属性,即可检测加粗或斜体状态:

>>> doc.paragraphs[5].runs[0].bold
True
>>>> doc.paragraphs[7].runs[0].text
'Deep neural networks'
>>>> doc.paragraphs[7].runs[0].bold
True
>>>> doc.paragraphs[7].runs[13].text
'DNNs'
>>>> doc.paragraphs[7].runs[13].italic
True

完成判断与常见问题排查

  • 元数据缺失:若读取 core_properties 返回空字符串或报错,说明该 Word 文件未保留底层元数据,属正常现象。
  • 样式断裂:Word 排版中频繁切换字体或大小会导致一个自然段被切分成数十个 runs。处理复杂样式表时,建议先按 runs 分组再聚合文本,避免丢失格式标记。

总结

以上就是使用 Python 配合 python-docx 库读取与解析 Word 文档的详细内容,更多关于自动化提取文档元数据、段落文本及富文本样式的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表