使用python批量读取word文档并整理关键信息到excel表格的实例

  • Post category:Python

下面是关于“使用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表格的相关技能。在实际的工作中,我们可以根据具体需求进行相应的修改和扩展,以适应不同的情况。