我的知识记录

Python读取Word文档全部文字方法详解

用python-docx读取.docx文档所有段落文字,包括表格内文字,输出纯文本或保存为txt文件,适合批量提取Word内容做数据分析和检索。

场景痛点

手里一堆Word文档,需要把里面的文字全部提取出来做关键词搜索、内容归档、复制到别的系统。手动打开每个文件全选复制,几十份文档就要重复几十遍,还容易漏段落、漏表格。用python-docx可以一次性遍历文档所有段落和表格,把纯文本批量提取出来,秒级完成。

用到的库

pip install python-docx

完整代码

# 导入库
from docx import Document

def read_all_text(docx_path):
# 打开Word文档
doc = Document(docx_path)

all_text = []

# 读取所有段落
for para in doc.paragraphs:
text = para.text.strip()
if text:  # 跳过空段落
all_text.append(text)

# 读取所有表格中的文字
for table in doc.tables:
for row in table.rows:
row_text = []
for cell in row.cells:
# 每个单元格可能有多段,全部拼接
cell_text = cell.text.strip()
if cell_text:
row_text.append(cell_text)
if row_text:
all_text.append(' | '.join(row_text))

# 拼接成完整文本
full_text = '\n'.join(all_text)
return full_text

def save_text_to_file(text, output_path):
# 把提取的文字保存为txt文件
with open(output_path, 'w', encoding='utf-8') as f:
f.write(text)

if __name__ == '__main__':
input_file = 'demo.docx'
output_file = 'output.txt'

text = read_all_text(input_file)
print('=== 文档内容预览 ===')
print(text[:500])  # 打印前500字预览

save_text_to_file(text, output_file)
print(f'\n完整文字已保存到:{output_file}')

代码讲解

  • Document(docx_path)打开已有的.docx文件,路径写绝对路径或相对路径都行。
  • doc.paragraphs返回文档中所有段落对象,遍历每个段落用.text属性取出纯文字。
  • doc.tables返回文档中所有表格对象,嵌套遍历行row.rows和单元格cell.cells,把每个单元格的文字用|拼接成一行。
  • strip()去掉首尾空白字符,空段落直接跳过不加入结果。
  • 最后用\n把所有段落拼接成完整文本,写入txt文件时指定utf-8编码,防止中文乱码。

运行结果

运行脚本后控制台打印文档前500字预览,同时在当前目录生成output.txt文件,里面是Word文档全部文字内容,段落之间用换行分隔,表格内容每行用竖线分隔,用记事本或VS Code打开即可查看。

注意事项

  • python-docx读取的是段落和表格的纯文字,不会读取文本框、页眉页脚里的文字,这些需要单独遍历section。
  • 老版本.doc格式不支持,必须先另存为.docx
  • 如果文档有修订模式,python-docx读取的是原始文字,修订标记不会被识别。
  • 路径中如果有中文,Python3默认支持,但Windows下open写文件时务必指定encoding='utf-8'。

Python读取Word文档全部文字方法详解

标签:

更新时间:2026-09-15 08:58:44

上一篇:Python替换Word文档指定文字方法

下一篇:Python读取Word表格数据方法