批量提取word文档特定信息(干部任免审批表家庭关系信息)

分析word文档国有企业的干部任免审批表时,需要将家庭关系提取出来以进行信息比对。
import os
from docx import Document
from openpyxl import Workbook
import re

def extract_tables_from_word_folder(folder_path, excel_file):
    # 获取文件夹内的文件列表
    file_list = os.listdir(folder_path)

    # 计算文件数量
    file_count = len(file_list)
    print(file_count)

    
    # 创建 Excel 工作簿   
    wb = Workbook()
    ws = wb.active
    
    '''
        此处不宜定义列名,因为word表格如果有合并单元格,那么可能存在重复列数据.
        如果数据规范,则不必从文件名中取出姓名
    '''
    # # 定义列名
    # column_names =  ["文件名称", "领导干部", "称谓","姓名",	"出生年月",
	"政治面貌","工作单位及职务"]

    # # 写入列名
    # ws.append(column_names)

    # 遍历文件夹中的所有 Word 文件
    for file in os.listdir(folder_path):
        if file.endswith('.docx') or file.endswith('.doc'):
            doc = Document(os.path.join(folder_path, file))

            # # 获取第一个表格的第一行第二个单元格的值
            # first_table = doc.tables[0]
            # second_cell_value = first_table.rows[0].cells[1].text

            # 遍历文档中的所有表格
            for table in doc.tables:
                # 遍历表格中的所有行
                for row in table.rows:
                    # 检查整行内容是否包含指定字符串下列对于称谓的判断可能不够准确,
                    # 因为输入不规范。
                    if "家\n庭\n主\n要\n成\n员\n及\n重\n要\n社\n会\n关\n系" in '\\'.join([cell.text for cell in row.cells]) and row.cells[1].text!= "称  谓\n" :
                        # 创建一个空列表来存储当前行的单元格内容
                        row_data = [cell.text for cell in row.cells]
                        
                        # 删除政治面貌重复列.注意需要先知道哪列重复
                        del row_data[5]
                        
                        # 提取文件名称中的姓名
                        file_name = os.path.splitext(file)[0]
                        match = re.search(r'[\d.]*\s*([^:|\-]+)', file_name)
                        if match:
                            name = match.group(1)
                           
                            # 列表连接。将文件名、姓名和row_data连接起来
                            ws.append([os.path.splitext(file)[0],name] + row_data[1:-1])

    # 保存 Excel 文件
    wb.save(excel_file)


# 指定文件夹路径和 Excel 文件路径
folder_path = r"D:\jupyter\word\干部任免表"
excel_file = '干部家庭关系.xlsx'

# 调用函数将文件夹中的 Word 文件内容提取到 Excel 中
extract_tables_from_word_folder(folder_path, excel_file)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值