python CSV模塊的使用


簡介

CSV(comma separated values),逗號分隔值(字符分割值,字符可以不是逗號),常用的文本格式,用以存儲表格數據,包括數字或者字符。kaggle就是csv格式,python有內置的csv模塊。

csv中的函數

1、reader(csvfile,dialect='excel',**fmtparams)

csvfile,必須是支持迭代(Iterator)的對象,可以是文件(file)對象或者列表(list)對象,如果是文件對象,打開時需要加"b"標志參數。

dialect,編碼風格,默認為excel的風格,也就是用逗號(,)分隔,dialect方式也支持自定義,通過調用register_dialect方法來注冊。

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

import csv
with open("test.csv","rb") as myfile:
    lines = csv.reader(myfile)
    for line in lines:
        print line

lines是list,調用lines,next()函數,會返回一個string。

line是列表,元素是csv用逗號分隔得來的。

輸出結果:

reader對象還提供一些方法:line_num、dialect、next()

2、writer(csvfile,dialect='excel',**fmtparams)

with open('test.csv','wb') as myfile:
    mywriter = csv.writer(myfile);
    mywriter.writerow([7,'g'])
    mywriter.writerow([8,'h'])
    mylist = [[1,2,3],[4,5,6]
    mywriter.writerows(mylist)

writerow是一行一行寫;writerows是一次寫多行。

如果test.csv事先存在,就會調用writer函數清空原來文件的內容,再開始寫;沒存在,就創建它,writer函數返回myfile文件。

補充:除了writerow、writerows,writer對象還提供了其他一些方法:writeheader、dialect

3、register_dialect(name,[dialect,],**fmtparams)

name,你所自定義的dialect的名字,比如默認的是'excel',你可以定義成'mydialect'。

[dialect, ]**fmtparams,dialect格式參數,有delimiter(分隔符,默認的就是逗號)、quotechar、quoting等等

csv.register_dialect('mydialect',delimiter='|', quoting=csv.QUOTE_ALL)

上面代碼自定義了一個命名為mydialect的dialect,參數是設置了delimiter和quoting這兩個,其他的采用默認值,其中分隔符是'|'。

效果,在csv中存儲數據:

以mydialect風格打印:

with open('text.csv','rb') as myfile:
    lines = csv.reader(myfile,'mydialect')
    for line in lines:
        print line

輸出:

對於writer函數,同樣可以傳入mydialect作為參數。

4、unregister_dialect(name)

用於注銷自定義的dialect。

 

此外,csv模塊還提供get_dialect(name)、list_dialects()、field_size_limit([new_limit])等函數。

csv模塊還定義了

一些類:DictReader、DictWriter、Dialect等,DictReader和DictWriter類似於reader和writer。

一些常量:QUOTE_ALL、QUOTE_MINIMAL、.QUOTE_NONNUMERIC等,這些常量可以作為Dialects and Formatting Parameters的值。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM