python-cookbook学习笔记十一

时间:2021-05-26 16:04:10
CSV文件读取:

Csv文件格式如下:分别有2行三列。

python-cookbook学习笔记十一

访问代码如下:

f=open(r'E:\py_prj\test.csv','rb')

f_csv=csv.reader(f)

for f in f_csv:

   
print f
在这里f是一个元组,为了访问某个字段,需要用索引来访问对应的值,如f[0]访问的是firstf[1]访问的是secondf[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.firstrow.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数据:
Jsonxml是网络世界上用的最多的数据交换格式。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可以存储复杂的数据结构。当我们打印出来的时候。可以看到结构的可视化结果不怎么好。
python-cookbook学习笔记十一

我们可以用pprint的方法将结果打印出结构化的样子:pprint(json.load(f))
 

 
这样看起来就清晰直观多了