Python把對應(yīng)格式的csv文件轉(zhuǎn)換成字典類型存儲腳本的方法
該腳本是為了結(jié)合之前的編寫的腳本,來實現(xiàn)數(shù)據(jù)的比對模塊,實現(xiàn)數(shù)據(jù)的自動化!由于數(shù)據(jù)格式是定死的,該代碼只做參考,有什么問題可以私信我!
CSV的數(shù)據(jù)格式截圖如下:

readDataToDic.py源代碼如下:
#coding=utf8
import csv
'''
該模塊的主要功能,是根據(jù)已有的csv文件,
通過readDataToDicl函數(shù),把csv中對應(yīng)的部分,
寫入字典中,每個字典當(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中的元素個數(shù)
rowNumber=len(self.mdbuffer)
#設(shè)置當(dāng)前行號
currentrow=1
#設(shè)置json數(shù)據(jù)的屬性值
propertyJson={}
#讀取列表中的元素
for row in range(1,rowNumber):
#創(chuàng)建一個臨時變量用來存取一次循環(huán)的屬性鍵值
temp={}
#獲取列表中一個元素
item=self.mdbuffer[row]
#獲取當(dāng)前元素,當(dāng)前元素代表的是每個
#事件起始的位置
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")
#判斷埋點事件與serviceId是否相等
if item[0]==currentItem[0] and item[2]==currentItem[2]:
#把serviceId方式字典propertyJson中
propertyJson["serviceId"]=serviceId
#把屬性/值對放入temp字典中
temp[propertyName]=propertyValue
#調(diào)用字典的update函數(shù),把temp中的鍵值對
#添加到 propertyJson字典中
propertyJson.update(temp)
#使用continue,如果為if條件為true則循環(huán)執(zhí)行if語句模塊
continue
else:
#把行號設(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
#把屬性/值對放入propertyJson字典中
propertyJson[propertyName]=propertyValue
#輸入字典中的值,并對值進(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()
運行結(jié)果圖:

以上這篇Python把對應(yīng)格式的csv文件轉(zhuǎn)換成字典類型存儲腳本的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
對python中 math模塊下 atan 和 atan2的區(qū)別詳解
今天小編就為大家分享一篇對python中 math模塊下 atan 和 atan2的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
PyCharm使用之配置SSH Interpreter的方法步驟
這篇文章主要介紹了PyCharm使用之配置SSH Interpreter的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Python數(shù)據(jù)類型--字典dictionary
這篇文章主要介紹了Python數(shù)據(jù)類型字典dictionary,字典是另一種可變?nèi)萜髂P停铱纱鎯θ我忸愋蛯ο?。下面詳?xì)內(nèi)容需要的小伙伴可以參考一下,希望對你有所幫助2022-02-02
Python英文文本分詞(無空格)模塊wordninja的使用實例
今天小編就為大家分享一篇關(guān)于Python英文文本分詞(無空格)模塊wordninja的使用實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02

