Python CSV模組使用執行個體

來源:互聯網
上載者:User
舉幾個例子來介紹一下,Python 的 CSV模組的使用方法,包括,reader, writer, DictReader, DictWriter.register_dialect

一直非常喜歡python的csv模組,簡單易用,經常在項目中使用,現在舉幾個例子說明一下。

代碼如下:


reader(csvfile[, dialect='excel'][, fmtparam])


參數表:

csvfile
需要是支援迭代(Iterator)的對象,並且每次調用next方法的傳回值是字串(string),通常的檔案(file)對象,或者列表(list)對象都是適用的,如果是檔案對象,開啟是需要加"b"標誌參數。

dialect
編碼風格,預設為excel方式,也就是逗號(,)分隔,另外csv模組也支援excel-tab風格,也就是定位字元(tab)分隔。其它的方式需要自己定義,然後可以調用register_dialect方法來註冊,以及list_dialects方法來查詢登入的所有編碼風格列表。

fmtparam
格式化參數,用來覆蓋之前dialect對象指定的編碼風格。

例子:

代碼如下:


import csv

reader = csv.reader(file('your.csv', 'rb'))
for line in reader:
print line

writer(csvfile[, dialect='excel'][, fmtparam])


參數表(略: 同reader, 見上)

例子:

代碼如下:


import csv

writer = csv.writer(file('your.csv', 'wb'))
writer.writerow(['Column1', 'Column2', 'Column3'])
lines = [range(3) for i in range(5)]
for line in lines:
writer.writerow(line)

DictReader

同reader差不多,都是讀取CSV用的,只不過會產生一個字典(dict)類型的返回,而不是迭代類型。

DictWriter

我主要想說的是DictWriter,我為什麼會喜歡使用DictWriter呢,因為普通的writer你需要手工去構建列表,尤其是通過表單提交的時候,而我之前因為一直在zope平台上開發,而zope支援一種進階表單資料模型,也就是可以通過定義表單的時候加入相應的標誌來使提交後的表單資料自動的產生一個記錄(records)類型,也就是產生一個每項資料都是一個字典的列表。這樣,我就可以非常方便的直接把表單資料傳給 DictWriter而產生csv,當然這個是在你能保證資料的正確性的前提下。好下面我來簡單的說明一下這種zope的進階表單資料類型。

例子:

代碼如下:




表單提交後的結果是:

代碼如下:


rows = [{'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
{'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
{'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
{'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
{'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'}]


這樣就可以直接調用DictWriter.writerows方法來處理了:

代碼如下:


import csv

fieldnames = ['Column1', 'Column2', 'Column3', 'Column4']
dict_writer = csv.DictWriter(file('your.csv', 'wb'), fieldnames=fieldnames)
dict_writer.writerow(fieldnames) # CSV第一行需要自己加入
dict_writer.writerows(rows) # rows就是表單提交的資料

*注意:這裡的csv檔案寫入需要External Method的支援,因為在zope中由於許可權沙箱的問題是不能直接操作csv模組來讀寫檔案系統的。



這樣用起來是不是非常的方便呢,這裡給出產生上面表單的DTML代碼:

代碼如下:




您可以根據您自己的需要來改寫這個表單的產生。

參考文獻:
http://docs.python.org/lib/module-csv.html
http://www.python.org/dev/peps/pep-0305/

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.