這裡介紹如何在 Python 中使用 csv
模組,讀取與寫入逗點分隔檔。
逗點分隔(Comma-Separated Values,簡稱 csv)是一種簡單的文字檔格式,以逗號分隔不同欄位的資料,很多軟體在儲存與交換表格資料時都支援這樣的格式。
在 Python 中若要讀取或產生 csv 的檔案,可以使用內建的 csv
模組,以下是使用方式以及範例程式碼。
假設我們有一個 csv 檔案 iris.csv
,其內容如下:
我們可以使用下面這段程式碼將這個 csv 檔的內容讀取出來:
我們使用 csv.reader
讀取出來的 rows
會是一個二維的 list,裡面就是整張表格的資料,這裡我們把每一列的 list 直接輸出,執行後會像這樣:
這裡在開啟 csv 檔案時加上了 newline=''
參數,這是為了讓資料中包含的換行字元可以正確被解析,所以建議在讀取 csv 檔案時都固定加入這個參數。
如果資料欄位之間的分隔字元不是使用預設的逗號,而是其他字元的話,在讀取時就要自行指定欄位的分隔字元。假設我們要讀取 Linux 的 /etc/passwd
這個檔案,資料如下:
這個檔案內容的各個欄位是以冒號(:
)來分隔的,我們可以使用以下這段程式碼來讀取:
輸出如下:
我們也可以將 csv 檔案的內容讀取進來之後,轉為 Python 的 dictionary 格式,這樣在存取各定資料時會方便一些:
這個例子中我們使用以 csv.DictReader
來讀取 CSV 檔案的內容,它會自動把第一列(row)當作欄位的名稱,將第二列以後的每一列轉為 dictionary,這樣我們就可以使用欄位的名稱來存取資料。執行後的輸出會像這樣:
如果我們在程式中產生了表格的資料,想要儲存為 csv 檔案,可以使用以下這段程式碼:
產生的 output.csv
檔案內容會像這樣:
輸出 csv 檔案時也可以自行指定欄位的分隔字元,例如:
輸出的 output.csv
檔案內容會變成這樣:
如果我們的資料是已經整理好的二維表格,也可以一次就把整張表格寫進 csv 檔案中:
這樣產生的 csv 檔案也會跟上面的例子相同。
如果我們在 Python 中的資料格式是 dictionary,也可以使用 csv.DictWriter
直接將 dictionary 寫入 csv 檔案中:
此範例輸出的檔案內容也跟上面的例子相同。