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'。

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