零基礎也能看懂的python內(nèi)置csv模塊教程_第1頁
零基礎也能看懂的python內(nèi)置csv模塊教程_第2頁
零基礎也能看懂的python內(nèi)置csv模塊教程_第3頁
零基礎也能看懂的python內(nèi)置csv模塊教程_第4頁
零基礎也能看懂的python內(nèi)置csv模塊教程_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

第零基礎也能看懂的python內(nèi)置csv模塊教程目錄csv(Comma-SeparatedValues)文件是什么?python中的csv文件清晰解法讀取文件寫入文件csv文件其它說明

csv(Comma-SeparatedValues)文件是什么?

它是一種文件格式,一般也被叫做逗號分隔值文件,可以使用Excel軟件或者文本文檔打開。

其中數(shù)據(jù)字段用半角逗號間隔(也可以使用其它字符),使用Excel打開時,逗號會被轉(zhuǎn)換為分隔符。

csv文件是以純文本形式存儲了表格數(shù)據(jù),并且在兼容各個操作系統(tǒng)。

例如下面的文本,在excel中就以表格的形式存在。

sid,name,age

10010,橡皮擦,18

10086,發(fā)量迷人的喬喻,19

10000,各位博主,20

下面就對python內(nèi)置模塊csv的用法進行簡單的說明。

python中的csv文件清晰解法

讀取文件

使用csv.reader()讀取csv文件內(nèi)容。

importcsv#模塊導入

withopen('aa.csv','r',newline='',encoding='utf-8')asf:

#_csv.readerobjectat0x00000000020918D0

reader=csv.reader(f)

forrinreader:

print(r)

其中csv.reader()方法的原型如下所示:

csv.reader(csvfile,dialect='excel',**fmtparams)

其中的參數(shù)csvfile可以是任何對象,但要求該對象是一個迭代器,所以文件對象和列表對象都可以傳入,如果是文件對象,還要求打開它時攜帶參數(shù)newline=''。后面的參數(shù)保持默認即可。

第二種方式是使用DictReader類,該類實現(xiàn)的效果與reader()方法一致,也是接收可迭代對象,返回生成器,差異是將返回的結(jié)果放到了一個字典的值內(nèi),字典的鍵就是單元格的標題。并且這樣輸出的函數(shù)是,不需要單獨處理csv的列頭行了。

importcsv#模塊導入

withopen('aa.csv','r',newline='',encoding='utf-8')asf:

reader=csv.DictReader(f)

forrinreader:

print(r)

輸出內(nèi)容:

OrderedDict([('sid','10010'),('name','橡皮擦'),('age','18')])

OrderedDict([('sid','10086'),('name','發(fā)量迷人的喬喻'),('age','19')])

OrderedDict([('sid','10000'),('name','各位博主'),('age','20')])

寫入文件

csv文件寫入用到的模塊方法是csv.writer(),該方法的原型如下:

csv.writer(csvfile,dialect='excel',**fmtparams)

最基本的寫入:

importcsv

withopen('abc.csv','w',newline='')ascsvfile:

w=csv.writer(csvfile)

#寫入列頭

w.writerow(["sid","name","age"])

w.writerow(["10010","橡皮擦","18"])

w.writerow(["10086","發(fā)量迷人的喬喻","18"])

這時如果你在打開文件時,缺少了newline='',那寫入csv文件內(nèi)容之后,會出現(xiàn)多余的換行。

除此之外,我們寫入csv文件的時候,可以啟用dialect(方言)參數(shù)。例如使用|作為列的分隔符。

此時的文件寫入代碼寫成下述內(nèi)容:

classmy_dialect(csv.Dialect):

lineterminator='\r\n'

delimiter=';'

quotechar='"'

quoting=csv.QUOTE_MINIMAL

withopen('abc.csv','w',newline='')ascsvfile:

w=csv.writer(csvfile,dialect=my_dialect)

#寫入列頭

w.writerow(["sid","name","age"])

w.writerow(["10010","橡皮擦","18"])

w.writerow(["10086","發(fā)量迷人的喬喻","18"])

上述代碼定義了一個新的類my_dialect,并使其繼承csv.Dialect類,重寫了其中的部分字段。

delimiter:分隔字符,默認為,;

lineterminator:writer方法寫入數(shù)據(jù)時,每行的結(jié)尾字符,默認為\r\n;

quotechar:單字符,用于包裹具有特殊字符的字段,例如定界符,引號字符,換行符,默認是";

quoting:控制writer何時生成引號,以及reader何時識別引號,默認是QUOTE_MINIMAL,其余幾個值分別是

QUOTE_ALL(全部加引號),

QUOTE_MINIMAL(特定情況加),

QUOTE_NONNUMERIC(所有非數(shù)字加),

QUOTE_NONE(都不加);

Writer對象的方法說明:

csvwriter.writerow(row):寫入單行;

csvwriter.writerows(rows):寫入多行

importcsv#模塊導入

csv_headers=['name','age']

rows=[('橡皮擦',18),

('發(fā)量迷人的喬喻',19),

('各位博主',20)]

withopen('./aa.csv','w',encoding='utf-8',newline='')asf:

csv_file=csv.writer(f)

csv_file.writerow(csv_headers)#寫入頭

csv_file.writerows(rows)

與DictReader類使用方法差不多,還存在一個DictWriter類,該類將以字段格式寫入csv文件字段。

importcsv

withopen('abc.csv','w',newline='')ascsvfile:

w=csv.DictWriter(csvfile,fieldnames=['sid','name','age'])

w.writeheader()#寫入列頭

w.writerow({'sid':'10010','name':'橡皮擦','age':18})

w.writerow({'sid':'10010','name':'橡皮擦','age':18})

w.writerow({'sid':'10010','name':'橡皮擦','age':18})

上述代碼尤其注意fieldnames參數(shù)是必填參數(shù),表示的是列頭,并且在寫入正式數(shù)據(jù)前,需使用w.writeheader()寫入列頭。

csv文件其它說明

關于csv方言,可以使用csv.register_dialect方法將name與dialect關聯(lián)起來,核心含義相當于給dialect起了一個別名。刪除也比較簡單,使用csv.unregister_dialect(name)即可。csv.list_dialects()返回已經(jīng)注冊的方言名稱,你可以在電腦上做一下測試,查看Python環(huán)境中提供的幾種方言。

importcsv

csv.register_dialect('ca',delimiter='|',quoting=csv.QUOTE_MINIMAL)

withopen('abc.csv','w',newline='')ascsvfile:

w=csv.DictWriter(csvfile,fieldnames=['sid','name','age'],dialect='ca')

w.writeheader()#寫入列頭

w.writerow({'sid':'10010','name':'橡皮擦','age':18})

w.writerow({'sid':'10010','name':'橡皮擦','age':18})

w.writerow({'sid':'10010','name':'橡皮擦','age':18})

csv模塊還提供了c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論