Python把对应格式的csv文件转换成字典类型存储脚本

来源:互联网 发布:nginx 多域名别名 编辑:程序博客网 时间:2024/06/05 08:59

该脚本是为了结合之前的编写的脚本,来实现数据的比对模块,实现数据的自动化!由于数据格式是定死的,该代码只做参考,有什么问题可以私信我!

CSV的数据格式截图如下:



readDataToDic.py源代码如下:

#coding=utf8import csv '''该模块的主要功能,是根据已有的csv文件,通过readDataToDicl函数,把csv中对应的部分,写入字典中,每个字典当当作一条json数据'''class GenExceptData(object):    def __init__(self):        try:            #用来存放json数据的字典            self.dataDic={}            #存放csv中读取的数据            self.mdbuffer=[]            #打开csv文件,设置读的权限            csvHand=open("20170510174450.csv","r")            #创建读取csv文件句柄            readcsv=csv.reader(csvHand)            #把csv的数据读取到mdbuffer中            for row in readcsv:                    self.mdbuffer.append(row)              #把数据穿件为为字典类型的            self.readDataToDicl()            #保存文件        except Exception,e:            print "Read Excel  error:",e        finally:            #关闭csv文件            csvHand.close()      def readDataToDicl(self):        try:            #获取mdbuffer中的元素个数            rowNumber=len(self.mdbuffer)            #设置当前行号            currentrow=1            #设置json数据的属性值            propertyJson={}            #读取列表中的元素                  for row in range(1,rowNumber):                #创建一个临时变量用来存取一次循环的属性键值                temp={}                #获取列表中一个元素                item=self.mdbuffer[row]                #获取当前元素,当前元素代表的是每个                #事件起始的位置                currentItem=self.mdbuffer[currentrow]                #获取serviceId并进行解码                serviceId= currentItem[2].decode("gbk")                #获取属性并进行解码,把解码的值存入propertyName                propertyName=item[3].decode("gbk")                #获取属性值并进行解码,把解码的值存入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                    #调用字典的update函数,把temp中的键值对                    #添加到 propertyJson字典中                    propertyJson.update(temp)                    #使用continue,如果为if条件为true则循环执行if语句模块                    continue                  else:                    #把行号设置为当前行                    currentrow=row                      #把当前的属性解码放入propertyName                                        propertyName=currentItem[3].decode("gbk")                    #把当前的属性值解码放入propertyName                    propertyValue=currentItem[4].decode("gbk")                    #把serviceId方式字典propertyJson中                     propertyJson["serviceId"]=serviceId                        #把属性/值对放入propertyJson字典中                      propertyJson[propertyName]=propertyValue                     #输入字典中的值,并对值进行解码                    #该部分用于调试使用                     for key,val in propertyJson.items():                        print key,"=",val.encode("utf8")                    print "#"*50                     #为下次做准备,清除字典中的元素                    propertyJson.clear()                                     except Exception,e:            print "Reading Data TO Dic Error:",e        def test():    GenExceptData()    if __name__=="__main__":    test()

运行结果图:


阅读全文
0 0
原创粉丝点击