关于对csv文件的操作。

python标准库中有csv的库,使用非常方便。

 import csv

 with open('pingan.csv','rb') as rf:
reader = csv.reader(rf)#读操作
with open('pingan2.csv','wb') as wf:
writer = csv.writer(wf)
headers = reader.next()
writer.writerow(headers)#写操作
for row in reader:
if row[0] < '2016-01-01':#满足条件就退出循环
break            
if int(row[5]) >= 50000000:#对特定数据的判断
writer.writerow(row)

关于对json文件的操作。

python标准库中也有json的库,操作也很方便。

 import json

 l = (1,2,'abc',{'name':'john','age':18})

 with open('demo.json','wb') as f:
json.dump(l,f) with open('demo.json','rb') as f:
r = json.load(f)

关于对xml文件的操作,同样也是用标准库中的xml库来操作。

 #coding:utf8
from xml.etree.ElementTree import parse f = open('demo.xml')
et = parse(f) root = et.getroot()#根节点 for child in root:#子节点
print child.get('name') for e in root.iterfind('country'):#跟上面结果一样,只是用了迭代
print e.get('name') print list(root.iter('rank'))#找孙子节点 print root.findall('country/*')#某些语法特点
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自带的写入方法不能对格式进行操作,所以要自己写个缩进的方法。

 def pretty(e,level=0):
if len(e)>0:
e.text='\n'+'\t'*(level+1)#先换行,然后给level个Tab
for child in e:
pretty(child,level+1)#递归给tab
child.tail = child.tail[:-1]#tail不懂(尾部的意思),这是对倒数第二行(子节点结尾)进行操作
#如果不操作,子节点结尾就会跟孙子节点一样缩进了
e.tail = '\n' +'\t' *level#这是对最后一行进行操作

Python168的学习笔记5的更多相关文章

  1. Python168的学习笔记8

    #coding:utf8 #斐波那契数列,第三项起,每一项都等于前两项之和 def memo(func): cache = {}#闭包 def wrap(*args): if args not in ...

  2. Python168的学习笔记7

    关于多线程操作. 对于IO操作,如访问网站,写入磁盘这种需要时间等待响应的操作,多个cpu也几乎不能提高效率. 对于CPU密集型操作,如这个格式转换,可以通过多个cpu同时去进行. 但是对于pytho ...

  3. Python168的学习笔记6

    如何派生内置不可变类型并修改实例化行为. 个人理解,如何派生出自己想要的类. class IntTuple(tuple): def __new__(cls,iterable): g = (x for ...

  4. Python168的学习笔记4

    关于普通文本文件的读写 python2.7中,未注明的字符都是以acsii来编码的,而要让字符能够通用,必须声明为unicode. s=u'你好',s.encode('utf8')就是指用utf8来进 ...

  5. Python168的学习笔记3

    list.extend(),可以拓展list,a=(0,1),b=(2,3) a.extend(b),a就变成(0,1,2,3) 分割字符串(除去字符串中的,\/;之类的),如果用str.split( ...

  6. Python168的学习笔记2

    关于for循环,其实质是利用被循环对象的__iter__,或者__getitem__属性接口,由可迭代对象得到迭代器.for循环就是不断调用.next(),直到最终捕获到stop. import re ...

  7. Python168的学习笔记1

    在对list的条件选择有两种常用方法,直接使用filter函数,就是filter(func,sequence);另外一种就是迭代操作,类似 x for x in sequence func.这两种方法 ...

  8. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  9. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

随机推荐

  1. sql____001

    题目: create table my_001 (id int,value int); insert into my_001 values(1,10): insert into my_001 valu ...

  2. Oracle Certified Java Programmer 经典题目分析(二)

    ...接上篇 what is reserved(保留) words in java? A. run B. default C. implement D. import Java 关键字列表 (依字母排 ...

  3. Docker Compose practice

    Docker Compose 什么是 Docker-Compose? Compose 可以让用户在集群中部署分布式应用.简单的说,Docker Compose 属于一个"应用层"的 ...

  4. mysql -> 用户管理&数据类型_04

    用户权限,回收权限 数据类型 生产案例

  5. docker stack 部署 filebeat

    =============================================== 2018/7/21_第3次修改                       ccb_warlock 更新 ...

  6. ibm x3550m4 开启cpu高性能模式

    1.必须进bios里调整,和调整超线程一样,重启服务器按F1进bios界面,选择system settings 2.选择最大性能模式:Operating Modes>Choose Operati ...

  7. 从源码分析StringUtils包

    今天用到StringUtils.join方法,闲来无聊,看了下源码 当然不可能自己分析,你傻啊,在这里推荐一个别人分析的; http://blog.csdn.net/baidu_31071595/ar ...

  8. No.10 selenium学习之路之通过元素定位获取属性

    1. implicitly_wait()隐形等待.等待页面加载完成,作用是全局的. 时间可以设置的长,短时间也没有影响.直到设置的时间耗完 时间耗完也不会报错 2.获取title值 driver.ti ...

  9. 洛谷P1455搭配购买

    传送门啦 这是强连通分量与背包的例题 需要注意的就是价值和价格两个数组不要打反了.. 另外 这是双向图!!! #include <iostream> #include <cstdio ...

  10. 微信小程序地图模块

    微信小程序的地图模块官方提供的API比较少,详情请见   官方文档 以下为一个示例                               <!--pages/location/locati ...