Python 是最流行、功能最強大的編程語言之一。由於它是自由開源的,因此每個人都可以使用。大多數 Fedora 系統都已安裝了該語言。Python 可用於多種任務,其中包括處理逗號分隔值(CSV)數據。CSV文件一開始往往是以表格或電子錶格的形式出現。本文介紹瞭如何在 Python 3 中處理 C ...
Python 是最流行、功能最強大的編程語言之一。由於它是自由開源的,因此每個人都可以使用。大多數 Fedora 系統都已安裝了該語言。Python 可用於多種任務,其中包括處理逗號分隔值(CSV)數據。CSV文件一開始往往是以表格或電子錶格的形式出現。本文介紹瞭如何在 Python 3 中處理 CSV 數據。
這裡要註意:不管你是為了Python就業還是興趣愛好,記住:項目開發經驗永遠是核心,如果如果你沒有python入門到高級實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,裡面很多新python教程項目,還可以跟老司機交流討教!
CSV 數據正如其名。CSV 文件按行放置數據,數值之間用逗號分隔。每行由相同的欄位定義。簡短的 CSV 文件通常易於閱讀和理解。但是較長的數據文件或具有更多欄位的數據文件可能很難用肉眼解析,因此在這種情況下電腦做得更好。
這是一個簡單的示例,其中的欄位是 Name
、Email
和 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', '[email protected]'),
('Country', 'CZ')]),
OrderedDict([('Name', 'Bernard Jones'),
('Email', '[email protected]'),
('Country', '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入門到高級實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,裡面很多新python教程項目,還可以跟老司機交流討教!
本文的文字及圖片來源於網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。