您好,登錄后才能下訂單哦!
該腳本是為了結(jié)合之前的編寫的腳本,來實(shí)現(xiàn)數(shù)據(jù)的比對(duì)模塊,實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)化!由于數(shù)據(jù)格式是定死的,該代碼只做參考,有什么問題可以私信我!
CSV的數(shù)據(jù)格式截圖如下:
readDataToDic.py源代碼如下:
#coding=utf8 import csv ''' 該模塊的主要功能,是根據(jù)已有的csv文件, 通過readDataToDicl函數(shù),把csv中對(duì)應(yīng)的部分, 寫入字典中,每個(gè)字典當(dāng)當(dāng)作一條json數(shù)據(jù) ''' class GenExceptData(object): def __init__(self): try: #用來存放json數(shù)據(jù)的字典 self.dataDic={} #存放csv中讀取的數(shù)據(jù) self.mdbuffer=[] #打開csv文件,設(shè)置讀的權(quán)限 csvHand=open("20170510174450.csv","r") #創(chuàng)建讀取csv文件句柄 readcsv=csv.reader(csvHand) #把csv的數(shù)據(jù)讀取到mdbuffer中 for row in readcsv: self.mdbuffer.append(row) #把數(shù)據(jù)穿件為為字典類型的 self.readDataToDicl() #保存文件 except Exception,e: print "Read Excel error:",e finally: #關(guān)閉csv文件 csvHand.close() def readDataToDicl(self): try: #獲取mdbuffer中的元素個(gè)數(shù) rowNumber=len(self.mdbuffer) #設(shè)置當(dāng)前行號(hào) currentrow=1 #設(shè)置json數(shù)據(jù)的屬性值 propertyJson={} #讀取列表中的元素 for row in range(1,rowNumber): #創(chuàng)建一個(gè)臨時(shí)變量用來存取一次循環(huán)的屬性鍵值 temp={} #獲取列表中一個(gè)元素 item=self.mdbuffer[row] #獲取當(dāng)前元素,當(dāng)前元素代表的是每個(gè) #事件起始的位置 currentItem=self.mdbuffer[currentrow] #獲取serviceId并進(jìn)行解碼 serviceId= currentItem[2].decode("gbk") #獲取屬性并進(jìn)行解碼,把解碼的值存入propertyName propertyName=item[3].decode("gbk") #獲取屬性值并進(jìn)行解碼,把解碼的值存入propertyValue propertyValue=item[4].decode("gbk") #判斷埋點(diǎn)事件與serviceId是否相等 if item[0]==currentItem[0] and item[2]==currentItem[2]: #把serviceId方式字典propertyJson中 propertyJson["serviceId"]=serviceId #把屬性/值對(duì)放入temp字典中 temp[propertyName]=propertyValue #調(diào)用字典的update函數(shù),把temp中的鍵值對(duì) #添加到 propertyJson字典中 propertyJson.update(temp) #使用continue,如果為if條件為true則循環(huán)執(zhí)行if語句模塊 continue else: #把行號(hào)設(shè)置為當(dāng)前行 currentrow=row #把當(dāng)前的屬性解碼放入propertyName propertyName=currentItem[3].decode("gbk") #把當(dāng)前的屬性值解碼放入propertyName propertyValue=currentItem[4].decode("gbk") #把serviceId方式字典propertyJson中 propertyJson["serviceId"]=serviceId #把屬性/值對(duì)放入propertyJson字典中 propertyJson[propertyName]=propertyValue #輸入字典中的值,并對(duì)值進(jìn)行解碼 #該部分用于調(diào)試使用 for key,val in propertyJson.items(): print key,"=",val.encode("utf8") print "#"*50 #為下次做準(zhǔn)備,清除字典中的元素 propertyJson.clear() except Exception,e: print "Reading Data TO Dic Error:",e def test(): GenExceptData() if __name__=="__main__": test()
運(yùn)行結(jié)果圖:
以上這篇Python把對(duì)應(yīng)格式的csv文件轉(zhuǎn)換成字典類型存儲(chǔ)腳本的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。