文章内容
2017/9/19 16:20:42,作 者: 黄兵
Python把对应格式的csv文件转换成字典类型存储脚本
为了结合之前的编写的脚本,来实现数据的比对模块,实现数据的自动化!由于数据格式是定死的,该代码只做参考,有什么问题可以私信我!
CSV的数据格式截图如下:
readDataToDic.py源代码如下:
- #coding=utf8
- import 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()
评论列表