1. 程式人生 > >python讀取兩個csv文件數據,進行查找匹配出現次數

python讀取兩個csv文件數據,進行查找匹配出現次數

def port utf-8 true csv enc pen qrc closed

現有需求 表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 item
if __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文件數據,進行查找匹配出現次數