一、如何讀寫csv資料
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[]<'2016-01-01':
continue
if int(rd[])>:
writer.writerow(rd)
二、如何讀寫json資料
import json
a = ['b', 'a', , {'y': None, 'x': , 'z': 'hello'}]
# separators清單必須前面是',',後面是':',前後可以加空格
# sort_keys設為True可以對清單中字典進行排序
aj = json.dumps(a, sort_keys=False, separators=[',', ':'])
print aj
# ["b", "a", , {"x": , "y": null, "z": "hello"}] # 此處結果将None轉換為null
print json.loads(aj)
# [u'b', u'a', , {u'y': None, u'x': , 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文檔
使用标準庫中的xml.etree.ElementTree,其中的parse函數可以解析xml文檔
from xml.etree.cElementTree import parse
f = open('demo.xml')
et = parse(f) # 得到一個
root=et.getroot() # 得到樹的根結點
四、如何建構xml文檔
使用标準庫中的xml.etree.ElementTree,建構ElementTree,使用write方法寫入檔案
import csv
from xml.etree.ElementTree import Element, ElementTree
def pretty(e, level=): # 格式美化
if len(e) > : # 子元素的個數
e.text = '\n' + '\t' * (level + ) # 如果有子元素的值後面添加回車,在下一行添加制表符
for child in e:
pretty(child, level + ) # 遞歸調用
child.tail = child.tail[:-] # 下一層循環結束,進入到上一層級格式時,需要減少一人制表符
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')
五、如何讀寫excel檔案
import xlrd, xlwt
rbook = xlrd.open_workbook('excel.xlsx') # 打開一個工作簿
rsheet = rbook.sheet_by_name('Sheet1') # 打開一個工作表
nc = rsheet.ncols
nr = rsheet.nrows
rsheet.put_cell(, nc, xlrd.XL_CELL_TEXT, u'總計', None) # 對總計列添加字段
for row in xrange(, nr):
t = sum(rsheet.row_values(row, )) # 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+):
c = rsheet.cell_value(row, col)
print c
wsheet.write(row, col, c, style)
wbook.save('excel_bak.xls') # xlwt 對xlsx格式支援不好,可能會出錯