Python168的学习笔记5
关于对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的更多相关文章
- Python168的学习笔记8
#coding:utf8 #斐波那契数列,第三项起,每一项都等于前两项之和 def memo(func): cache = {}#闭包 def wrap(*args): if args not in ...
- Python168的学习笔记7
关于多线程操作. 对于IO操作,如访问网站,写入磁盘这种需要时间等待响应的操作,多个cpu也几乎不能提高效率. 对于CPU密集型操作,如这个格式转换,可以通过多个cpu同时去进行. 但是对于pytho ...
- Python168的学习笔记6
如何派生内置不可变类型并修改实例化行为. 个人理解,如何派生出自己想要的类. class IntTuple(tuple): def __new__(cls,iterable): g = (x for ...
- Python168的学习笔记4
关于普通文本文件的读写 python2.7中,未注明的字符都是以acsii来编码的,而要让字符能够通用,必须声明为unicode. s=u'你好',s.encode('utf8')就是指用utf8来进 ...
- Python168的学习笔记3
list.extend(),可以拓展list,a=(0,1),b=(2,3) a.extend(b),a就变成(0,1,2,3) 分割字符串(除去字符串中的,\/;之类的),如果用str.split( ...
- Python168的学习笔记2
关于for循环,其实质是利用被循环对象的__iter__,或者__getitem__属性接口,由可迭代对象得到迭代器.for循环就是不断调用.next(),直到最终捕获到stop. import re ...
- Python168的学习笔记1
在对list的条件选择有两种常用方法,直接使用filter函数,就是filter(func,sequence);另外一种就是迭代操作,类似 x for x in sequence func.这两种方法 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
随机推荐
- 【FCS NOI2018】福建省冬摸鱼笔记 day2
第二天. 同学还是不带本子记笔记.dalao. 第二天:图论,讲师:@ExfJoe 全程划水,前面都讲水算法[虽然我可能已经忘记了]什么最短路,Tarjan,最小生成树,2SAT,差分约束啥的,我现在 ...
- 【原创】Linux环境下的图形系统和AMD R600显卡编程(1)——Linux环境下的图形系统简介
Linux/Unix环境下最早的图形系统是Xorg图形系统,Xorg图形系统通过扩展的方式以适应显卡和桌面图形发展的需要,然而随着软硬件的发展,特别是嵌入式系统的发展,Xorg显得庞大而落后.开源社区 ...
- redis学习笔记之redis简介
redis简介 Redis是一个开源的,高性能的,基于键值对的缓存与存储系统,通过设置各种键值数据类型来适应不同场景下的缓存与存储需求.同事redis的诸多高层级功能使其可以胜任消息队列,任务队列等不 ...
- Team Foundation Server 2010服务器安装
本安装指南使用Windows Server 2008企业版为基础,安装Windows Server 2008 SP2(必须),在此操作系统环境上进行TFS2010的安装与配置. 三.系统用户设置 1. ...
- 两个Bounding Box的IOU计算代码
Bounding Box的数据结构为(xmin,ymin,xmax,ymax) 输入:box1,box2 输出:IOU值 import numpy as np def iou(box1,box2): ...
- vue全面介绍--全家桶、项目实例
简介 “简单却不失优雅,小巧而不乏大匠”. 2016年最火的前端框架当属Vue.js了,很多使用过vue的程序员这样评价它,“vue.js兼具angular.js和react.js的优点,并剔除了它们 ...
- python高性能web框架——Japronto
近期做了一个简单的demo需求,搭建一个http server,支持简单的qa查询.库中有10000个qa对,需要支持每秒10000次以上的查询请求. 需求比较简单,主要难点就是10000+的RPS. ...
- 洛谷P1841重要的城市
传送门啦 重要城市有三个性质如下: 1.重要城市能对其他两个不同城市的最短路径做出贡献 2.重要城市具有唯一性,如果两不同城市之间的最短路径有两种中间城市情况,那么这两个中间城市可以彼此代替,就都不能 ...
- 教您如何进行SQL跨表更新
SQL跨表更新数据是在使用SQL数据库中比较常用的,下面就将为您详细介绍SQL跨表更新数据的步骤,希望对您学习SQL跨表更新数据有所启迪. 原始数据如下,首先是表结构 A_dept的初始数据 A_em ...
- ObjectInputStream与ObjectOutputStream
雇员类 package io; import java.io.Serializable; @SuppressWarnings("serial") public class Emp ...