from urllib import urlretrieve
# urlretrieve('http://finance.yahoo.com/d/quotes.csv?s=000001.sz','pingan1.csv') # 从网址下载文件存到文件中
import csv
with open('pingan1.csv','rb') as rf:
reader=csv.reader(rf) # 返回一个reader对象,可迭代
with open('pingan3.csv','wb') as wf:
writer=csv.writer(wf) # 返回一个writer对象
headers =reader.next()
writer.writerow(headers) # 将列表写入csv文件的一行 headers为rowdict
for rd in reader:
if rd[0]<'2016-01-01':
continue
if int(rd[5])>50:
writer.writerow(rd)
import json
a = ['b', 'a', 123, {'y': None, 'x': 1, 'z': 'hello'}]
# separators列表必须前面是',',后面是':',前后可以加空格
# sort_keys设为True可以对列表中字典进行排序
aj = json.dumps(a, sort_keys=False, separators=[',', ':'])
print aj
# ["b", "a", 123, {"x": 1, "y": null, "z": "hello"}] # 此处结果将None转换为null
print json.loads(aj)
# [u'b', u'a', 123, {u'y': None, u'x': 1, u'z': u'hello'}] # load后,转换为unicode编码
print '------------- dump load ------------'
# dump与load是将对象转换成json串写入文件或直接从json文件中读取对象
with open('demo.json','wb') as f:
json.dump(a,f)
with open('demo.json','rb') as f:
b = json.load(f)
print b
使用标准库中的xml.etree.ElementTree,其中的parse函数可以解析xml文档
from xml.etree.cElementTree import parse
f = open('demo.xml')
et = parse(f) # 得到一个
root=et.getroot() # 得到树的根结点
使用标准库中的xml.etree.ElementTree,构建ElementTree,使用write方法写入文件
import csv
from xml.etree.ElementTree import Element, ElementTree
def pretty(e, level=0): # 格式美化
if len(e) > 0: # 子元素的个数
e.text = '\n' + '\t' * (level + 1) # 如果有子元素的值后面添加回车,在下一行添加制表符
for child in e:
pretty(child, level + 1) # 递归调用
child.tail = child.tail[:-1] # 下一层循环结束,进入到上一层级格式时,需要减少一人制表符
e.tail = '\n' + '\t' * level # 如果元没有子元素,则在子元素结束符后面添加回车,下一行 添加制表符
# 将csv转化成xml文件
def csvToXml(fname): #
with open(fname, 'rb') as f:
reader = csv.reader(f) # 获取csv文件的reader可迭代对象
headers = reader.next() # 获取头部行
root = Element('Data') # 建立根元素
for row in reader: # 遍历csv的每一行
eRow = Element('Row') # 建立行元素,添加到根元素之下
root.append(eRow)
for tag, text in zip(headers, row): # zip将可迭代元素并列迭代
el = Element(tag) # 建立行元素下子元素
el.text = text
eRow.append(el)
pretty(root) # 格式美化
return ElementTree(root)
et = csvToXml('pingan3.csv')
et.write('pingan1.xml')
import xlrd, xlwt
rbook = xlrd.open_workbook('excel.xlsx') # 打开一个工作簿
rsheet = rbook.sheet_by_name('Sheet1') # 打开一个工作表
nc = rsheet.ncols
nr = rsheet.nrows
rsheet.put_cell(0, nc, xlrd.XL_CELL_TEXT, u'总计', None) # 对总计列添加字段
for row in xrange(1, nr):
t = sum(rsheet.row_values(row, 1)) # row行,从第1个到最后一个值的和
rsheet.put_cell(row, nc, xlrd.XL_CELL_NUMBER, t, None) # 对总计列赋值
wbook = xlwt.Workbook() # 新建一个workbook对象
wsheet = wbook.add_sheet(rsheet.name) # 添加一个sheet表
style = xlwt.easyxf('align:vertical center,horizontal center') # 定义样式
for row in xrange(nr):
for col in xrange(nc+1):
c = rsheet.cell_value(row, col)
print c
wsheet.write(row, col, c, style)
wbook.save('excel_bak.xls') # xlwt 对xlsx格式支持不好,可能会出错