python读取两个csv文件数据,进行查找匹配出现次数,,现有需求 表1表2需


现有需求 表1

技术分享图片

表2

技术分享图片

需要拿表1中的编码去表2中的门票编码列匹配,统计出现的次数,由于表2编码列是区域间,而且列不是固定的,代码如下

技术分享图片
#encoding:utf-8##导入两个CSV进行比对import csv##读取编码def GetQrCode(filePath):    #定义一个空的list集合    list = set()    csv_file = csv.reader(open(filePath, ‘r‘))    for item in csv_file:        # 判断字符串是否为纯数字        if (item[0].isdigit()):            ##将正常的编码存储到集合            yield item[0]def GetNumberList(filePath):    csv_file = csv.reader(open(filePath, ‘r‘))    #去掉表头    flag=True    for item in csv_file:        if flag:            # 去掉表头            flag=False            continue        if len(item) > 1:            yield itemif __name__ == ‘__main__‘:     #定义字典装结果集     dicList={}    #获取编码列表     qrcodelist=GetQrCode(‘E:\\new_qrcode.csv‘)     #获取要匹配的号段list     numberList=GetNumberList(‘E:\\门票统计汇总 - 副本.csv‘)     isBreak=False     for qrcode in qrcodelist:   ##最外层全部的qrcode         #print(qrcode)         #注意,这里要讲list转换为列表,否则循环过的元素不会重复进行         numberList=list(numberList)         for numbers in numberList: ##号段里的每一行             if isBreak:                 isBreak=False                 break             numbers=[i for i in numbers if i != ‘‘]             numbers=list(numbers)             for number in numbers:                 if number!=numbers[0]: #单个号段                     if number !=‘‘:                         #判断一组还是两组                         numberLength=len(str(number).split(‘-‘))                         if numberLength>1:                             #两组的                             firstNumber=int(str(number).split(‘-‘)[0])                             lastNumber=int(str(number).split(‘-‘)[1])                             #print("first:"+str(firstNumber)+":"+str(lastNumber))                             qrcode=int(qrcode)                             if qrcode>=firstNumber and qrcode<=lastNumber:                                 if numbers[0] in dicList.keys():                                     dicList[numbers[0]]=int(dicList[numbers[0]])+1                                 else:                                     dicList[numbers[0]] =1                                 isBreak=True                                 break                         else:                             #一组的                             #print(str(number))                             firstNumber = int(number)                             if qrcode==firstNumber:                                 if numbers[0] in dicList.keys():                                     dicList[numbers[0]]=int(dicList[numbers[0]])+1                                 else:                                     dicList[numbers[0]] =1                                 isBreak = True                                 break    #讲结果集写入csv文件     # 打开文件,追加a     out = open(‘E:\\resut_1.csv‘, ‘a‘, newline=‘‘)     # 设定写入模式     csv_write = csv.writer(out, dialect=‘excel‘)     # 写入具体内容     csv_write.writerow(‘渠道名称‘,‘次数‘)     for item in dicList:         csv_write.writerow(item+‘,‘+str(dicList[item]))         #print(str(item)+":"+ str(dicList[item]))     out.close()   
View Code

导出数据结果:

python读取两个csv文件数据,进行查找匹配出现次数

评论关闭