Python读取Word文档全攻略:从入门到高效办公
一、为什么用Python读取Word文档?
在日常办公或数据处理中,Word文档是常见的信息载体。使用Python可以自动化提取内容,避免手动复制粘贴,尤其适合批量处理、数据挖掘或生成报告。本文将聚焦于 .docx 格式(Office 2007+),通过 python-docx 库实现高效读取。
二、环境准备
首先安装python-docx:
pip install python-docx注意:该库不支持 .doc 格式,如需处理旧版文档,可先转换为docx或使用 win32com(Windows下)。
三、基础读取:文本与段落
导入库,打开文档:
from docx import Document
doc = Document('example.docx')遍历段落:
for para in doc.paragraphs:
print(para.text)若需保留格式(如加粗、字号),可通过 para.runs 访问每个文本片段:
for run in para.runs:
print(run.text, run.bold, run.font.size)四、表格数据提取
Word表格很常见,python-docx对表格支持良好:
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
print(cell.text)也可以按行获取:
for row in table.rows:
row_data = [cell.text for cell in row.cells]
print(row_data)五、图片与嵌入式内容
文档中的图片可通过内联形状获取:
for shape in doc.inline_shapes:
if shape.type == 3: # 图片类型
image = shape.image
with open('image.png', 'wb') as f:
f.write(image.blob)注意:图片可能以不同格式存储,需根据实际情况选择扩展名。
六、样式与格式信息
除了文本,有时需要获取字体、颜色、对齐方式等:
for para in doc.paragraphs:
print(para.style.name) # 段落样式
fmt = para.paragraph_format
print(fmt.alignment, fmt.space_before, fmt.space_after)
for run in para.runs:
print(run.font.name, run.font.size, run.font.color.rgb)七、高级技巧
- 分节读取:
doc.sections可获取页眉页脚、页面设置等。 - 提取所有文本:结合段落和表格,递归获取。
- 处理超长文档:使用迭代器(如
doc.paragraphs)避免内存爆炸。 - 保存修改:读取后修改再
doc.save('new.docx')。
八、实战案例:提取会议纪要
假设一个Word文档包含标题、日期、参会人员以及讨论内容表格,代码示例:
from docx import Document
doc = Document('会议纪要.docx')
# 提取标题
print('标题:', doc.paragraphs[0].text)
# 提取表格
table = doc.tables[0]
for row in table.rows:
print(' | '.join(cell.text for cell in row.cells))九、常见问题
- 读取乱码:确保文档编码正确,通常UTF-8。若文档损坏,尝试用Word修复。
- 性能慢:对于超大文档,可考虑
lxml直接解析XML(docx本质是压缩包)。 - 跨平台:python-docx纯Python实现,Windows/Linux/macOS均可。
十、总结
Python读取Word文档并不复杂,python-docx提供了完善的API,覆盖文本、表格、图片、样式等需求。掌握后,你可以轻松实现自动化办公,比如批量提取简历信息、生成报告、数据迁移等。希望本文能帮助你快速上手,提升工作效率!