通过传过来的模板对原模板进行修改,检查完之后通过匹配规则匹配是否修改,如果没有修改好,则将没有修改完善的网点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')