提取Excel的两列形成字典,用主键key查询value,对文件进行重命名

书接上回的需求:

OCR提取PDF中的某字段,并用字段对文件进行命名,适用于所有图片类型文件_江湖人称桂某人的博客-CSDN博客OCR提取PDF中的某字段,并用字段对文件进行命名,适用于所有图片类型文件,办公自动化https://blog.csdn.net/qq_39837305/article/details/128315280?spm=1001.2014.3001.5502增加新的任务目标:

提供一个Excel文件,里面包含统一社会信用代码与公司名称的信息,把识别出的统一社会信用代码匹配到公司名称,再用公司名称重命名PDF。

这里有读者可能会问:那为什么不直接对企业名称进行识别呢?

这是因为OCR目前对汉字的识别率远低于数字与字母,而且采用正则的方法很难使用长度(统一社会信用代码都是18位)这个特征匹配字段,经常匹配到一些奇奇怪怪的东西,当然如果正则表达式使用的特别好的人可以忽略这点。

一、思路

使用字典让统一社会信用代码作为key,企业名称作为value,形成一一对应的关系,通过读取pdf名称(此时是信用代码),在字典中查找到其对应的企业名称即可。

提取Excel的两列形成字典,用主键key查询value,对文件进行重命名_第1张图片

 

 读取两列存为字典格式:

提取Excel的两列形成字典,用主键key查询value,对文件进行重命名_第2张图片

二、代码

import os
import pandas as pd
import shutil

EXCEL_PATH = r''  # Excel的路径
ROOT_DIR = r''  # 需要更改的目录
NEW_PATH = r''  # 保存的目录
PATH_LIST = []

data = pd.read_excel(EXCEL_PATH)
dict1 = dict(zip(data['统一社会信用代码'], data['企业名称']))  # 压缩成字典,代码对应企业名称

for dir_name in os.listdir(ROOT_DIR):  # 获取第一层目录下的目录名
    PATH_LIST.append(dir_name)  # 将目录下的文件名保存为列表形式

    dir_first = os.path.join(ROOT_DIR, dir_name)  # 把第一层目录 + 第二层目录进行拼接,目录下就是pdf文件了
    for file in os.listdir(dir_first):  # 获取目录下的文件名+后缀
        file_name, end = os.path.splitext(file)  # 获取文件名,后缀

        try:
            Chinese_name = dict1[file_name]  # 在字典中查询到企业中文名
            OLD_path = f'{dir_first}/{file}'  # 原来pdf的路径
            shutil.move(OLD_path,f'./finished/{Chinese_name}.pdf')
        except:
            continue

代码并不难写,注释写的也比较详细,核心就是用zip方法直接将DataFrame格式的两列数据存为字典格式。

最后加上try:抛出异常,这样遇到识别错误的信用代码就不会报错,否则遇到识别错误的情况会很麻烦。

欢迎指正!

你可能感兴趣的:(Python办公自动化,excel,python)