Python把对应格式的csv文件转换成字典类型存储脚本的方法
作者:坏蛋是我 发布时间:2022-07-08 08:39:06
标签: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()
运行结果图:
来源:https://blog.csdn.net/henni_719/article/details/74930674
0
投稿
猜你喜欢
- 1,模块命名(1)模块推荐使用小写命名,(2)除非有很多字母,尽量不要用下划线因为很多模块文件存与模块名称一致的类,模块采用小写,类采用首字
- 在js中this的指向对于新手来说一定是个难题,但是如果你真正理解了的话,也就没什么问题啦,下面就来讲讲this吧。JS中,this的值取决
- 迭代器模式迭代器模式(Iterator Pattern)是一种常用的设计模式,用于遍历集合中的元素,不暴露集合的内部结构。迭代器模式将集合和
- 本文实例讲述了Python设计模式之简单工厂模式。分享给大家供大家参考,具体如下:简单工厂模式(Simple Factory Pattern
- pandas的DataFrame对象,本质上是二维矩阵,跟常规二维矩阵的差别在于前者额外指定了每一行和每一列的名称。这样内部数据抽取既可以用
- 前言栈(Stack)是一种运算受限的线性表。按照先进后出(FILO,First In Last Out)的原则存储数据,先进入的数据被压入栈
- 本文实例为大家分享了python+opencv实现堆叠图片的具体代码,供大家参考,具体内容如下# import cv2# import nu
- ASP与MySQL的连接ASP和MySQL连接目前有两种方法:一种方法是使用MySQLX之类的组件,不过这种连接方法需要支付一定的费用;另外
- 最近疫情在家,空闲时间比较多,整理下之前写的Golang项目Weave,补充了一些功能,加了前端实现。作为一个Web应用模板,也算是功能比较
- 显示下级的方法elementui的节点过滤默认是不显示下级的代码在 :filter-node-method="filterNode
- 本文实例为大家分享了python超市商品销售管理系统的具体代码,供大家参考,具体内容如下class Goods(object): def _
- 这篇文章主要介绍了微信小程序顶部导航栏可滑动并选中放大,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 简单替代密码简单替换密码是最常用的密码,包括为每个密文文本字符替换每个纯文本字符的算法.在这个过程中,与凯撒密码算法相比,字母表是混乱的.示
- 本文为大家分享了mysql 5.7.17 winx64解压版安装配置方法,供大家参考,具体内容如下一、下载下载地址二、配置1. 解压下载的m
- 单例模式的概念单例模式很容易记住。就像名称一样,它只能提供对象的单一实例,保证一个类只有一个实例,并提供一个全局访问该实例的方法。在第一次调
- Golang 是一种简洁高效的编程语言,拥有强大的并发支持和丰富的标准库。在 Golang 中,计时器(timer)是一种常见的工具,用于定
- 简介PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库PyMySQL 遵循 Python 数据库 API
- 1.字符串处理将字符串中的数字替换成其两倍的值,例如:修改前:"AS7G123m (d)F77k"修改后:"A
- 前言Github源码地址本文同时也是学习唐宇迪老师深度学习课程的一些理解与记录。文中代码是实现在TensorFlow下使用卷积神经网络(CN
- MSDN:包含正在 SQL Server 实例上运行的进程的相关信息。这些进程可以是客户端进程或系统进程。 视图中主要的字段: 1. Spi