CSV文件读取:
Csv文件格式如下:分别有2行三列。
访问代码如下:
f=open(r'E:\py_prj\test.csv','rb')
f_csv=csv.reader(f)
for f in f_csv:
print f
在这里f是一个元组,为了访问某个字段,需要用索引来访问对应的值,如f[0]访问的是first,f[1]访问的是second,f[2]访问的是third. 用列索引的方式很难记住。一不留神就会搞错。可以考虑用对元组命名的方式
这里介绍namedtuple的方法。
下面的例子中实现用namedtuple创建一个对象赋值给user。其中对象实例是user,包含了3个属性值,分别是name,age,height。通过赋值后得到u
就可以利用属性访问的方法u.name来访问各个属性
user=namedtuple('user',['name','age','height'])
u=user(name='zhf',age=20,height=180)
print u.name
这种方法也可以用到csv文件的读取上。代码修改如下
f=open(r'E:\py_prj\test.csv','rb')
f_csv=csv.reader(f)
heading=next(f_csv)
Row=namedtuple('Row',heading)
for row in f_csv:
row=Row(*row)
print row.first,row.second,row.third
这样访问起来就直观多了。那么用对象的方式看起来太复杂了点。可以用字典的方式么。也是可以的而且方法更加简洁。方法如下。
f=open(r'E:\py_prj\test.csv','rb')
f_csv=csv.DictReader(f)
for row in f_csv:
print row['first']
同样的写入也可以用csv.DictWriter()
Json数据:
Json和xml是网络世界上用的最多的数据交换格式。Json主要有以下特点:
1 对象表示为键值对,也就是字典的形式
2 数据又逗号分隔
3 花括号保存对象
4 方括号保存数组
操作json文件的方法如下:
data={'name':'zhf','age':30,'location':'china'}
f=open('test.json','w')
json.dump(data,f)
f=open('test.json','r')
print json.load(f)
在生成的json文件中格式如下:
可以看到json的这种键值结构在感官上比XML的结构要简单得多,也更一目了然。
我们还可以对json进行扩展。如下面的数据。在record的键值里面是一个数组,数组里面有2个字典数据
data={'name':'zhf','age':30,'location':'china','record':[{'first':'china','during':10},{'second':'chengdu','during':20}]}
可以看到json可以存储复杂的数据结构。当我们打印出来的时候。可以看到结构的可视化结果不怎么好。
我们可以用pprint的方法将结果打印出结构化的样子:pprint(json.load(f))
这样看起来就清晰直观多了