我們在 Python 實際開發(fā)過程中,經(jīng)常涉及將數(shù)據(jù)導(dǎo)出為 Excel、Csv、Yaml、Json 等各種格式的文件的需求,一些粗魯?shù)膶崿F(xiàn)方式是通過安裝各種第三方模塊以支持不同格式文件的導(dǎo)出操作。
接下來要我們要介紹的這個模塊,再也不需要擔(dān)心因?qū)С霾煌袷綌?shù)據(jù)時而調(diào)用各種第三方模塊了,當(dāng)然使用 Pandas 也是一個不錯的選擇,只是過于重量級了。
Python Tablib 是麻省理工學(xué)院授權(quán)的與格式無關(guān)的表格數(shù)據(jù)集庫。支持導(dǎo)入、導(dǎo)出和操作表格數(shù)據(jù)集。優(yōu)雅的將數(shù)據(jù)導(dǎo)出為各種不同的格式,包括Excel,Json,Html,Yaml,Csv,Tsv等格式。
我們在 Windows10 Python3 環(huán)境下,使用 pip 進(jìn)行安裝 ,安裝命令如下:
接下來,讓我們一步步了解如何使用 Tablib ,簡潔而又優(yōu)雅的實現(xiàn)將數(shù)據(jù)導(dǎo)出為各種格式。
我們使用 tablib.Dataset 方法,采用如下方式創(chuàng)建數(shù)據(jù)集:
我們還可以另一種方式創(chuàng)建數(shù)據(jù)集,如下:
我們還可以通過導(dǎo)入現(xiàn)有文件數(shù)據(jù)的方式創(chuàng)建數(shù)據(jù)集,如下,我們?yōu)?dump.json 文件。
我們使用 tablib.Dataset.load 方法導(dǎo)入 dump.json 文件數(shù)據(jù),實現(xiàn)如下:
創(chuàng)建一個 tablib.Dataset 通過 load 方法,導(dǎo)入現(xiàn)已存在的文件。強大之處是 tablib 能夠自動檢測傳入的文件類型,并使用適當(dāng)?shù)母袷交椒ㄟM(jìn)行導(dǎo)入,實現(xiàn)從各種不同的文件類型中導(dǎo)入——強無敵。
比如,我們再導(dǎo)入 dataset.xlsx 文件,代碼實現(xiàn)如下:
我們可以使用 tablib.Dataset.append 方法,實現(xiàn)向數(shù)據(jù)集尾部添加行數(shù)據(jù),需要注意的是每行的元素數(shù)量應(yīng)與數(shù)據(jù)集的列數(shù)相同,代碼實現(xiàn)如下:
我們也可以使用 tablib.Dataset.insert 方法,實現(xiàn)向數(shù)據(jù)集指定位置添加行數(shù)據(jù),同樣需要注意每行的元素數(shù)量應(yīng)與數(shù)據(jù)集的列數(shù)相同,代碼實現(xiàn)如下:
我們可以使用 tablib.Dataset.append_col 方法,實現(xiàn)向數(shù)據(jù)集尾部添加列數(shù)據(jù),需要注意的是每列的元素數(shù)量應(yīng)與數(shù)據(jù)集的行數(shù)相同,代碼實現(xiàn)如下:
我們也可以使用 tablib.Dataset.insert_col 方法,實現(xiàn)向數(shù)據(jù)集指定位置添加列數(shù)據(jù),需要注意的是每列的元素數(shù)量應(yīng)于數(shù)據(jù)集的行數(shù)相同,代碼實現(xiàn)如下:
我們可以像Python列表一樣通過切片和索引獲取行數(shù)據(jù)。像Python字典通過列名和索引獲取列數(shù)據(jù),代碼實現(xiàn)如下:
我們可以使用以下方式,實現(xiàn)行刪除:
我們可以使用 del dataset['column_name'] ,實現(xiàn)刪除指定列,代碼實現(xiàn)如下:
我們可以將數(shù)據(jù)集轉(zhuǎn)換為如下任一格式,強無敵。
我們演示一下,其中幾種數(shù)據(jù)格式,如下:
執(zhí)行上述代碼,輸出結(jié)果為:
終于介紹到,讓我激動不已的數(shù)據(jù)導(dǎo)出了,簡單而優(yōu)雅,通用而高效。
導(dǎo)出 dataset_o.xlsx 文件如下:
使用DataBook 導(dǎo)出多頁數(shù)據(jù)
導(dǎo)出 dataset_ot.xlsx 文件如下: