通过传过来的模板对原模板进行修改,检查完之后通过匹配规则匹配是否修改,如果没有修改好,则将乜有修改完善的网点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\')
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。


