Skip to main content

用Python來抓取政府公開資料(CSV)

 

 

什麼是CSV?

CSV (Comma-Separated Values,逗號分隔值為常見的一種「純文字」資料儲存的檔案格式,將所有資料以半形的逗號隔開,一般的試算表軟體均能處理並儲存CSV格式。

例如健保署的「健保特約機構口罩剩餘數量明細清單」開放資料格式提供的就是CSV檔:

下載該CSV檔,用Excel開啟的畫面如下圖:

CSV檔可以用一般文字編輯軟體來開啟,例如用記事本開啟的畫面如下圖,無法像試算表軟體那樣對齊:

 

用Python處理線上的CSV資料

 

Python處理CSV檔的方式與JSON不同,可以先參考以下範例:

import  urllib.request,csv,io
url = 'CSV檔的網址'
webpage = urllib.request.urlopen(url)  #開啟網頁
data = csv.reader(webpage.read().decode('utf-8').splitlines()) #讀取資料到data陣列中
for i in data:
    print('名稱->',i[1],'成人口罩=',i[4], '兒童口罩',i[5])   

因為CSV的資料已經儲存到「data」這個二維陣列中了,所以用 for i in data: 之後,i就變成了一維陣列,索引值從0開始編號,所以i[0]就是「醫事機構代碼」、i[1]變成機構名稱、i[4]就是成人口罩剩餘數……等。

 

上面的程式 執行後的結果如下:

(以下省略)

 

練習:修改以上程式碼,讓使用者可以輸入藥局的名稱(例如中市西屯區衛生所)或地址(如臺中市西屯區),列出符合該關鍵字的藥局所剩的成人及兒童口罩數量。