修改模板并检查是否修改

小编 2026-07-10 阅读:929 评论:0
通过传过来的模板对原模板进行修改,检查完之后通过匹配规则匹配是否修改,如果没有修改好,则将乜有修改完善的网点ID等相关信息放入到一个excl中 import pandas as pd import nu...

通过传过来的模板对原模板进行修改,检查完之后通过匹配规则匹配是否修改,如果没有修改好,则将乜有修改完善的网点ID等相关信息放入到一个excl中

import pandas as pd
import numpy as np
import sys,os,re
from pandas import Series,DataFrame



file ={}  #设置列表用于存储 不正确的 模板所对应的 网点ID
path = r\'E:\\three_city\'
excel_files = [path + \'\\\\\'+ i for i in os.listdir(path)]
print(excel_files)
first = pd.read_csv(excel_files[0])
for i in excel_files[1:]:
    print(len(pd.read_csv(i).columns))
    first = pd.concat([first,pd.read_csv(i)],sort= False)


second = pd.read_excel(r\'E:\\全国规则调整\\调整过的表格\\total.xlsx\').fillna(\'不修改\')  #改过的表格
first = first[[\'网点ID\',\'网点名称\',\'投件规则名\',\'取件规则名\',\'短信模板名\',\'预约规则名\',\'滞留件规则\']] #需要合并的几个城市
# print(first[\'网点ID\'])
# print(second[\'网点ID\'])
third = pd.merge(first,second,on=\'网点ID\',suffixes = (\'_甲方\',\'_乙方\'))[[\'网点ID\',\'网点名称_甲方\',\'网点名称_乙方\',\'投件规则名\',\'投件规则(调整后名称)\',\'取件规则名\',\'取件规则(调整后名称)\',\'短信模板名\',\'短信模板(调整后名称)\',\'预约规则名\',\'预约规则(调整后名称)\',\'滞留件规则\',\'滞留规则(调整后时长)\',
       \'调整原因描述\']] #下载好的城市的表格 和 已经修改好的表格合在了一起
# print(third[\'网点ID\'])
#
def inspect(x,y,z): #这时 分几种情况 一是 填写的模板不正确,缺少序号 第二是填写的模板忘记了标点 第三是  模板为 不修改 ,不符合这三种情况的话返回 这个模板对应的index号
    if \'\'.join(y.split(\',\')) in \'\'.join(x.split(\',\')) or y == \'不修改\': #针对缺少标点的这种
        pass
    else:
        print(\"z:\",z)
        file[z[\'网点ID\']] = \'投件出现的问题\'

def inspect1(x,y,z):
    if \'\'.join(y.split(\' \')) in \'\'.join(x.split(\' \')) or y == \'不修改\': #针对缺少标点的这种
        pass
    else:
        if z[\'网点ID\'] in file:
            file[z[\'网点ID\']] += \'和取件出现的问题\'
        else:
            file[z[\'网点ID\']] = \'取件出现的问题\'


def inspect2(x,y,z): #预约 针对预约中 2小时-9预约费:小0.4,中0.4,大0.4
                   #针对预约中出现的多种分隔符 用re.split进行分隔
    if \'\'.join(re.split(\'-|/|:|,\',x)) in \'\'.join(re.split(\'-|/|:|,\',y)) or y == \'不修改\': #针对缺少标点的这种
        pass
    else:
        if z[\'网点ID\'] in file:
            file[z[\'网点ID\']] += \'和预约出现的问题\'
        else:
            file[z[\'网点ID\']] = \'预约出现的问题\'


def inspect3(x,y,z): #短信的 分隔符较为复杂 ag:【免12小时】-915计划专属
    if \'\'.join(re.split(\'【|-|/|:|,|】|(|)\',x)) in \'\'.join(re.split(\'【|-|/|:|,|】|(|)\',y)) or \'\'.join(re.split(\'【|-|/|:|,|】|(|)\',y)) in \'\'.join(re.split(\'【|-|/|:|,|】|(|)\',x)) or y == \'不修改\': #针对缺少标点的这种
        pass
    else:
        if z[\'网点ID\'] in file:
            file[z[\'网点ID\']] += \'和短信模板出现的问题\'
        else:
            file[z[\'网点ID\']] = \'短信模板出现的问题\'

#
third.apply(lambda x:inspect(x[\'投件规则名\'],x[\'投件规则(调整后名称)\'],x),axis =1)
third.apply(lambda x:inspect1(x[\'取件规则名\'],x[\'取件规则(调整后名称)\'],x),axis =1)
third.apply(lambda x:inspect2(x[\'预约规则名\'],x[\'预约规则(调整后名称)\'],x),axis =1)
third.apply(lambda x:inspect3(x[\'短信模板名\'],x[\'短信模板(调整后名称)\'],x),axis =1)
# third.apply(lambda x:inspect(x[\'投件规则名\'],x[\'投件规则(调整后名称)\']),axis =1)


# print(third.isnull().any().to_excel(r\'C:\\Users\\lenovo\\Desktop\\look.xlsx\'))
if os.path.exists(r\'E:\\全国规则调整\\检查产生的文件\\合并.xlsx\'): #判断文件是否存在
    os.remove(r\'E:\\全国规则调整\\检查产生的文件\\合并.xlsx\')      #如果存在文件则删除
third.to_excel(r\'E:\\全国规则调整\\检查产生的文件\\合并.xlsx\')
# print(third.columns)
print(file,\'\\n\',len(file))

file1 = [] #储存网点ID
file2 = [] #储存网点名称
for a,b in file.items():
    file1.append(a)
    file2.append(b)
file = {\'网点ID\':file1,\'问题指向\':file2}
print(len(list(file.values())[0]))
print(DataFrame(file))
third = pd.merge(DataFrame(file),second,on=\'网点ID\')[[\'网点ID\', \'城市\',\'网点名称\', \'投件规则(调整后名称)\',
        \'取件规则(调整后名称)\', \'预约规则(调整后名称)\', \'短信模板(调整后名称)\', \'滞留规则(调整后时长)\',\'问题指向\']] #将选取的出错ID和第二个表重合


new_columns = [\'网点ID\',\'网点名称first\', \'网点名称third\',\'问题指向\',\'投件规则名\',\'投件规则(调整后名称)\', \'取件规则名\', \'取件规则(调整后名称)\',\'短信模板名\',\'短信模板(调整后名称)\',\'预约规则名\', \'预约规则(调整后名称)\',\'滞留件规则\',\'滞留规则(调整后时长)\']
third =  pd.merge(third,first,on=\'网点ID\',suffixes=[\'third\',\'first\']).reindex(columns = new_columns)
print(third.columns)
if os.path.exists(r\'E:\\全国规则调整\\检查产生的文件\\可能改成错误的网点.xlsx\'): #判断文件是否存在
    os.remove(r\'E:\\全国规则调整\\检查产生的文件\\可能改成错误的网点.xlsx\')      #如果存在文件则删除
third.to_excel(r\'E:\\全国规则调整\\检查产生的文件\\可能改成错误的网点.xlsx\')

 

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
标签列表