关于对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. 【FCS NOI2018】福建省冬摸鱼笔记 day2

    第二天. 同学还是不带本子记笔记.dalao. 第二天:图论,讲师:@ExfJoe 全程划水,前面都讲水算法[虽然我可能已经忘记了]什么最短路,Tarjan,最小生成树,2SAT,差分约束啥的,我现在 ...

  2. 【原创】Linux环境下的图形系统和AMD R600显卡编程(1)——Linux环境下的图形系统简介

    Linux/Unix环境下最早的图形系统是Xorg图形系统,Xorg图形系统通过扩展的方式以适应显卡和桌面图形发展的需要,然而随着软硬件的发展,特别是嵌入式系统的发展,Xorg显得庞大而落后.开源社区 ...

  3. redis学习笔记之redis简介

    redis简介 Redis是一个开源的,高性能的,基于键值对的缓存与存储系统,通过设置各种键值数据类型来适应不同场景下的缓存与存储需求.同事redis的诸多高层级功能使其可以胜任消息队列,任务队列等不 ...

  4. Team Foundation Server 2010服务器安装

    本安装指南使用Windows Server 2008企业版为基础,安装Windows Server 2008 SP2(必须),在此操作系统环境上进行TFS2010的安装与配置. 三.系统用户设置 1. ...

  5. 两个Bounding Box的IOU计算代码

    Bounding Box的数据结构为(xmin,ymin,xmax,ymax) 输入:box1,box2 输出:IOU值 import numpy as np def iou(box1,box2): ...

  6. vue全面介绍--全家桶、项目实例

    简介 “简单却不失优雅,小巧而不乏大匠”. 2016年最火的前端框架当属Vue.js了,很多使用过vue的程序员这样评价它,“vue.js兼具angular.js和react.js的优点,并剔除了它们 ...

  7. python高性能web框架——Japronto

    近期做了一个简单的demo需求,搭建一个http server,支持简单的qa查询.库中有10000个qa对,需要支持每秒10000次以上的查询请求. 需求比较简单,主要难点就是10000+的RPS. ...

  8. 洛谷P1841重要的城市

    传送门啦 重要城市有三个性质如下: 1.重要城市能对其他两个不同城市的最短路径做出贡献 2.重要城市具有唯一性,如果两不同城市之间的最短路径有两种中间城市情况,那么这两个中间城市可以彼此代替,就都不能 ...

  9. 教您如何进行SQL跨表更新

    SQL跨表更新数据是在使用SQL数据库中比较常用的,下面就将为您详细介绍SQL跨表更新数据的步骤,希望对您学习SQL跨表更新数据有所启迪. 原始数据如下,首先是表结构 A_dept的初始数据 A_em ...

  10. ObjectInputStream与ObjectOutputStream

    雇员类 package io; import java.io.Serializable; @SuppressWarnings("serial") public class Emp ...