1. 程式人生 > 程式設計 >使用 Python 讀取電子表格中的資料例項詳解

使用 Python 讀取電子表格中的資料例項詳解

Python 是最流行、功能最強大的程式語言之一。由於它是自由開源的,因此每個人都可以使用。大多數 Fedora 系統都已安裝了該語言。Python 可用於多種任務,其中包括處理逗號分隔值(CSV)資料。CSV檔案一開始往往是以表格或電子表格的形式出現。本文介紹瞭如何在 Python 3 中處理 CSV 資料。

CSV 資料正如其名。CSV 檔案按行放置資料,數值之間用逗號分隔。每行由相同的欄位定義。簡短的 CSV 檔案通常易於閱讀和理解。但是較長的資料檔案或具有更多欄位的資料檔案可能很難用肉眼解析,因此在這種情況下計算機做得更好。

這是一個簡單的示例,其中的欄位是 NameEmail Country

。在此例中,CSV 資料將欄位定義作為第一行,儘管並非總是如此。

Name,Email,Country
John Q. Smith,[email protected],USA
Petr Novak,[email protected],CZ
Bernard Jones,[email protected],UK

從電子表格讀取 CSV

Python 包含了一個 csv 模組,它可讀取和寫入 CSV 資料。大多數電子表格應用,無論是原生(例如 Excel 或 Numbers)還是基於 Web 的(例如 Google Sheet),都可以匯出 CSV 資料。實際上,許多其他可釋出表格報告的服務也可以匯出為 CSV(例如,PayPal)。

Python csv 模組有一個名為 DictReader 的內建讀取器方法,它可以將每個資料行作為有序字典 (OrderedDict) 處理。它需要一個檔案物件訪問 CSV 資料。因此,如果上面的檔案在當前目錄中為 example.csv,那麼以下程式碼段是獲取此資料的一種方法:

f = open('example.csv','r')
from csv import DictReader
d = DictReader(f)
data = []
for row in d:
  data.append(row)

現在,記憶體中的 data 物件是 OrderedDict 物件的列表:

[OrderedDict([('Name','John Q. Smith'),('Email','[email protected]'),('Country','USA')]),OrderedDict([('Name','Petr Novak'),'[email protected]'),'CZ')]),'Bernard Jones'),'[email protected]'),'UK')])]

引用這些物件很容易:

>>> print(data[0]['Country'])
USA
>>> print(data[2]['Email'])
[email protected]

順便說一句,如果你需要處理沒有欄位名標題行的 CSV 檔案,那麼 DictReader 類可以讓你定義它們。在上面的示例中,新增 fieldnames 引數並傳遞一系列名稱:

d = DictReader(f,fieldnames=['Name','Email','Country'])

真例項子

我最近想從一長串人員名單中隨機選擇一箇中獎者。我從電子表格中提取的 CSV 資料是一個簡單的名字和郵件地址列表。

幸運的是,Python 有一個有用的 random 模組,可以很好地生成隨機值。該模組 Random 類中的 randrange 函式正是我需要的。你可以給它一個常規的數字範圍(例如整數),以及它們之間的步長值。然後,該函式會生成一個隨機結果,這意味著我可以在資料的總行數範圍內獲得一個隨機整數(或者說是行號)。

這個小程式執行良好:

from csv import DictReader
from random import Random
d = DictReader(open('mydata.csv'))
data = []
for row in d:
  data.append(row)
r = Random()
winner = data[r.randrange(0,len(data),1)]
print('The winner is:',winner['Name'])
print('Email address:',winner['Email'])

顯然,這個例子非常簡單。電子表格本身包含了複雜的分析資料的方法。但是,如果你想在電子表格應用之外做某事,Python 或許是一種技巧!

總結

到此這篇關於使用 Python 讀取電子表格中的資料例項詳解的文章就介紹到這了,更多相關python 讀取表格資料內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!