下面是关于“使用python批量读取word文档并整理关键信息到excel表格的实例”的完整实例教程。
1. 背景简介
在实际的工作中,我们常常需要读取大量的word文档,提取其中的关键信息并整理到excel表格中进行进一步的分析和处理。使用python批量读取word文档并整理关键信息到excel表格是一个非常实用的技能,可以大大提高我们的工作效率。
2. 实现步骤
2.1 安装必要的python库
我们需要安装Python-docx和openpyxl库。Python-docx用于读取word文档,openpyxl用于操作excel表格。
可以在命令行中使用以下命令进行安装:
pip install python-docx
pip install openpyxl
2.2 创建python代码文件
在任意目录下创建一个名为read_word_docx.py的python代码文件。
2.3 读取word文档并提取关键信息
在代码文件中加入以下代码:
import os
from docx import Document
import openpyxl
# 创建Excel工作簿对象
wb = openpyxl.Workbook()
# 创建Excel工作表对象
ws = wb.active
# 写表头
ws.append(['文件名', '标题', '正文'])
# 设置需要读取的文件夹路径
folder_path = '/path/to/your/folder'
# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
# 只处理以.docx结尾的文件
if filename.endswith('.docx'):
# 读取word文档
doc = Document(os.path.join(folder_path, filename))
# 获取标题
title = doc.core_properties.title
# 获取正文
content = ''
for p in doc.paragraphs:
content += p.text
# 将文件信息写入Excel表格
ws.append([filename, title, content])
# 保存Excel表格
wb.save('output.xlsx')
上述代码首先创建了一个Excel工作簿对象和一个Excel工作表对象,然后写入表头。然后设定需要读取的文件夹路径,遍历文件夹中的所有以.docx结尾的文件,并依次读取文档中的标题和正文,将其写入到Excel表格中。最后保存Excel表格。
2.4 执行脚本并查看结果
将代码文件保存后,在命令行中进入代码文件所在的目录,执行以下命令:
python read_word_docx.py
代码运行完成后,在当前目录下会生成一个名为output.xlsx的Excel文件。打开文件,可以看到其中包含了我们读取的word文档的文件名、标题和正文等关键信息。
2.5 说明
以上代码中,我们读取word文档的方式是逐段读取正文文本,并将其拼接起来。如果文档中包含了表格、图片等内容,我们需要根据具体情况进行不同的处理。
此外,上述代码只针对单个文件夹下的word文档进行读取,如果需要读取多个文件夹下的word文档,我们还需要进行相应的修改。
3. 示例说明
3.1 示例1:读取多级文件夹下的word文档
如果需要读取多级文件夹下的word文档,我们只需要将代码中的遍历文件夹的方式修改为递归遍历即可。具体代码如下:
def read_folder(path, ws):
for filename in os.listdir(path):
file_path = os.path.join(path, filename)
if os.path.isdir(file_path):
read_folder(file_path, ws)
elif filename.endswith('.docx'):
# 读取word文档
doc = Document(file_path)
# 获取标题
title = doc.core_properties.title
# 获取正文
content = ''
for p in doc.paragraphs:
content += p.text
# 将文件信息写入Excel表格
ws.append([filename, title, content])
# 创建Excel工作簿对象
wb = openpyxl.Workbook()
# 创建Excel工作表对象
ws = wb.active
# 写表头
ws.append(['文件名', '标题', '正文'])
# 设置需要读取的文件夹路径
folder_path = '/path/to/your/folder'
# 读取文件夹中的word文档
read_folder(folder_path, ws)
# 保存Excel表格
wb.save('output.xlsx')
上述代码中,我们定义了一个名为read_folder的函数用于递归遍历文件夹,并在函数中调用了之前提到的读取word文档并提取关键信息的代码块。然后修改代码中的文件夹路径,调用read_folder函数,即可读取多级文件夹下的word文档。
3.2 示例2:读取中英文混合word文档
如果读取的word文档中包含了中文和英文,我们需要进行适当的语言判断和编码转换。具体代码如下:
import os
from docx import Document
import openpyxl
import chardet
import codecs
# 创建Excel工作簿对象
wb = openpyxl.Workbook()
# 创建Excel工作表对象
ws = wb.active
# 写表头
ws.append(['文件名', '标题', '正文'])
# 设置需要读取的文件夹路径
folder_path = '/path/to/your/folder'
# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
# 只处理以.docx结尾的文件
if filename.endswith('.docx'):
# 读取word文档
doc = Document(os.path.join(folder_path, filename))
# 获取标题
title = doc.core_properties.title
# 获取正文
content = ''
for p in doc.paragraphs:
# 判断文本编码
text = p.text
if isinstance(text, str):
encoding = chardet.detect(text.encode())['encoding']
else:
encoding = chardet.detect(text)['encoding']
# 进行编码转换
if encoding not in ['utf-8', 'ascii']:
text = text.encode(encoding).decode('utf-8')
content += text
# 将文件信息写入Excel表格
ws.append([filename, title, content])
# 保存Excel表格
wb.save('output.xlsx')
上述代码中,我们使用了chardet库对文本编码进行判断,并使用codecs库进行编码转换。这样即可兼容中英文混合的word文档。
4. 总结
通过本文的介绍,我们学习了使用python批量读取word文档并整理关键信息到excel表格的方法,掌握了读取word文档、操作excel表格的相关技能。在实际的工作中,我们可以根据具体需求进行相应的修改和扩展,以适应不同的情况。