溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python把對(duì)應(yīng)格式的csv文件轉(zhuǎn)換成字典類型存儲(chǔ)腳本的方法

發(fā)布時(shí)間:2020-09-29 17:04:44 來源:腳本之家 閱讀:200 作者:壞蛋是我 欄目:開發(fā)技術(shù)

該腳本是為了結(jié)合之前的編寫的腳本,來實(shí)現(xiàn)數(shù)據(jù)的比對(duì)模塊,實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)化!由于數(shù)據(jù)格式是定死的,該代碼只做參考,有什么問題可以私信我!

CSV的數(shù)據(jù)格式截圖如下:

Python把對(duì)應(yīng)格式的csv文件轉(zhuǎn)換成字典類型存儲(chǔ)腳本的方法

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ǔ)腳本的方法

以上這篇Python把對(duì)應(yīng)格式的csv文件轉(zhuǎn)換成字典類型存儲(chǔ)腳本的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(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)容。

AI