Python168的学习笔记5
关于对csv文件的操作。
python标准库中有csv的库,使用非常方便。
1 import csv 2 3 with open('pingan.csv','rb') as rf: 4 reader = csv.reader(rf)#读操作 5 with open('pingan2.csv','wb') as wf: 6 writer = csv.writer(wf) 7 headers = reader.next() 8 writer.writerow(headers)#写操作 9 for row in reader: 10 if row[0] < '2016-01-01':#满足条件就退出循环 11 break 12 if int(row[5]) >= 50000000:#对特定数据的判断 13 writer.writerow(row)
关于对json文件的操作。
python标准库中也有json的库,操作也很方便。
1 import json 2 3 l = (1,2,'abc',{'name':'john','age':18}) 4 5 with open('demo.json','wb') as f: 6 json.dump(l,f) 7 8 with open('demo.json','rb') as f: 9 r = json.load(f)
关于对xml文件的操作,同样也是用标准库中的xml库来操作。
1 #coding:utf8 2 from xml.etree.ElementTree import parse 3 4 f = open('demo.xml') 5 et = parse(f) 6 7 root = et.getroot()#根节点 8 9 for child in root:#子节点 10 print child.get('name') 11 12 for e in root.iterfind('country'):#跟上面结果一样,只是用了迭代 13 print e.get('name') 14 15 print list(root.iter('rank'))#找孙子节点 16 17 print root.findall('country/*')#某些语法特点 18 print root.findall('.//rank')
将csv文件写入xml的小实例
from xml.etree.ElementTree import ElementTree,Element#由element构成elementtree import csv from test_retractxml import pretty def csvToxml(fname): with open(fname,'rb') as f: reader = csv.reader(f) headers = reader.next()#读取了第一行 root = Element('Data')#构建了根节点 for row in reader:#这里指针已经去到数据行了 eRow = Element('Row')#创建子节点 root.append(eRow)#将子节点插入根节点 for tag,text in zip(headers,row):#迭代字典,就是将csv首行和数据行打包成字典,然后循环赋值 e = Element(tag) e.text = text eRow.append(e)#将孙子节点插入到子节点 pretty(root) return ElementTree(root) et = csvToxml('pingan2.csv') et.write('pingan.xml')
由于ElementTree自带的写入方法不能对格式进行操作,所以要自己写个缩进的方法。
1 def pretty(e,level=0): 2 if len(e)>0: 3 e.text='\n'+'\t'*(level+1)#先换行,然后给level个Tab 4 for child in e: 5 pretty(child,level+1)#递归给tab 6 child.tail = child.tail[:-1]#tail不懂(尾部的意思),这是对倒数第二行(子节点结尾)进行操作 7 #如果不操作,子节点结尾就会跟孙子节点一样缩进了 8 e.tail = '\n' +'\t' *level#这是对最后一行进行操作