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. 整体架构图 ...
随机推荐
- flask插件系列之flask_uploads上传文件
前言 flask可以实现上传文件和下载文件的基本功能,但如果想要健壮的功能,使用flask_uploads插件是十分方便的. 安装 pip install flask_uploads 基本使用 # e ...
- aarch64_p1
PEGTL-devel-1.3.1-2.fc26.aarch64.rpm 2017-02-14 08:00 63K fedora Mirroring Project PackageKit-1.1.6- ...
- 十八、springboot中hibernate配置sessionFactory访问数据库
前提 在yml或properties文件中配置数据库与数据库连接池 Hibernate配置 几种方式: 方式一: @Configuration public class HibernateConfig ...
- 玩玩 Nginx 1----- Nginx + ngx_lua安装测试【CentOs下】
最近打算搞搞nginx,扒着各位先驱的文章自己进行测试下,中间过程也是错误不断,记录一下,以备使用. nginx的安装挺简单的,主要还是研究下一些第三方的模块,首先想试下初始化 ...
- java基础51 IO流技术(打印流)
1.打印流(printStream)的概念 打印流可以打印任意的数据类型 2.printStream的步骤 1.找到目标文件 2.创建一个打印流 3.打印信息 4.关闭资源 3.实例 ...
- 如何学习React--[转]
如果你是一个 React (或者前端) 新手, 出于以下的原因, 你可能会对这个生态圈感到困惑: React 的目标群体历来是喜欢尝试新事物的开发者和前端专家. Facebook 只开源了他们在实际使 ...
- python 图片上传写入磁盘功能
本文是采取django框架,前端上传图片后端接收后写入磁盘,数据库记录图片在磁盘上的路径(相对),以下是前端上传到后端入库的基本流程 一. html代码 <!DOCTYPE html> & ...
- C#比较时分秒大小,终止分钟默认加十分钟,解决跨天、跨月、跨年的情况
private void cmbInHostimes_SelectedIndexChanged(object sender, EventArgs e) { DataRow[] dr; if (chkM ...
- 【Sequel Pro】下载查询结果乱码问题处理方式
1.下载查询结果已CSV格式保存 2.出现乱码问题样式如下截图: 3. 右键下载的CSV文件,选择用文本编辑打开 4.全选打开的页面内容,重新新建“文本编辑”并进行“储存” 5.打开 1.CSV,则看 ...
- shell在linux里摇摇晃晃
1.shell不只是一种解释器,还是一种编程工具 查看系统中可用的shell,linux默认使用 Bash Shell [root@localhost ~]# cat /etc/shells /bin ...