在 Python 中逐行讀取 CSV
在 Python 中,讀取檔案並按列列印是很常見的。但是有時逐行讀取檔案可能會有點混亂。
本文將介紹如何在 Python 中逐行讀取 CSV 檔案。我們將使用 Python csv 模組來處理 Python 中的 CSV 檔案。
在逐行讀取 CSV 檔案之前,讓我們先看一下 CSV 檔案的檔案格式。這將幫助我們以更好的方式操作 CSV 檔案。
CSV 檔案的檔案結構
CSV 代表逗號分隔值;它是一種將資料儲存在表中的簡單檔案格式。這些表格可以是電子表格或資料庫的形式。
我們還可以在簡單的文字編輯器(如記事本)中製作 CSV 檔案。每個 CSV 檔案行對應表的一條記錄。
此外,每條記錄都有一個或多個欄位。欄位和記錄的橫截面稱為單元格。這些欄位由逗號 (,) 分隔。
有時,我們也將此逗號稱為分隔符。請注意,此格式的名稱來自使用逗號作為欄位分隔符。CSV 檔案因其與許多程式、資料庫、電子表格和文書處理軟體的相容性而被廣泛使用。
現在讓我們使用上述檔案結構建立一個 CSV 檔案。建立檔案後,我們將使用不同的函式逐行讀取 CSV 檔案。
我們可以使用 Microsoft Excel 中的電子表格建立 CSV 檔案。但是,如果你的系統中沒有安裝 Microsoft Excel,你可以使用記事本或其他文字編輯器來製作 CSV 檔案。
我們可以將副檔名更改為 .csv 來執行此操作。另外,不要忘記遵循 CSV 檔案的格式。這是我們需要執行的所有步驟。
-
開啟文字編輯器並以正確的 CSV 格式編寫內容。標題以及記錄以逗號分隔。每條記錄都以新行開始。如下所示:
Roll Number,Name,Subject 1,Harry Potter,Magical Creatures 2,Ron Weasley,Divination 3,Hermione Granger,Dark arts
將此檔案另存為 Demo.csv。CSV 檔案將成功建立。
我們可以使用 open() 函式在 Python 中開啟 CSV 檔案。但是,我們更喜歡使用專門為此目的製作的 python csv 模組。要使用 csv 模組,我們必須先匯入它。
import csv 我們將使用我們已經建立的 Demo.csv 檔案進行演示。該檔案如下所示:
Roll Number,Name,Subject 1,Harry Potter,Magical Creatures 2,Ron Weasely,Divination 3,Hermione Granger,Dark arts 為了在 Python 中逐行讀取這個 CSV 的內容,我們將使用 csv 模組,該模組進一步提供了兩個類。這些類是 csv.reader 和 csv.DictReader。
讓我們一一來看這些類。
在 Python 中使用 csv.reader 逐行讀取 CSV 檔案
csv 模組的 csv.reader 類使我們能夠讀取和迭代 CSV 檔案中的行作為值列表。看下面的例子:
from csv import reader # open file with open("Demo.csv", "r") as my_file: # pass the file object to reader() file_reader = reader(my_file) # do this for all the rows for i in file_reader: # print the rows print(i) 我們使用 reader 物件來遍歷 Demo.csv 檔案的行。reader 物件充當迭代器。這樣可以確保一次只有一行留在記憶體中。
輸出:
['Roll Number', 'Name', 'Subject'] ['1', 'Harry Potter', 'Magical Creatures'] ['2', 'Ron Weasley', 'Divination'] ['3', 'Hermione Granger', 'Dark arts'] 讓我們看看這裡使用的函式。
Python 的 open() 函式用於開啟檔案。一旦它開啟一個檔案,它就會返回一個檔案物件。
語法:
open(file_name, mode) 引數 mode 指定我們要開啟檔案的模式。它可以是 read、append、write 或 create。
reader() 函式用於讀取檔案。它返回一個可迭代的閱讀器物件。在上面的例子中,這個可迭代的物件是 file_reader,從 for 迴圈的使用中必須清楚。
在上面的示例中,還列印了標題。我們也可以列印沒有標題的 CSV 檔案。看下面的例子:
from csv import reader # skip the first line(the header) with open("Demo.csv", "r") as my_file: file_csv = reader(my_file) head = next(file_csv) # check if the file is empty or not if head is not None: # Iterate over each row for i in file_csv: # print the rows print(i) 輸出:
['1', 'Harry Potter', 'Magical Creatures'] ['2', 'Ron Weasley', 'Divination'] ['3', 'Hermione Granger', 'Dark arts'] 此處不列印標題。這種方法的工作原理與前一種方法類似,只是我們在迭代期間跳過了第一行。我們使用了 next() 函式來跳過標題。
Python 中的 next() 函式返回迭代器中存在的下一項。其語法如下所述。
語法:
next(iterable_object / iterable, default) Iterable 或 iterable object 是我們必須迭代的一組值。default 是一個可選引數,如果 iterable 到達其末尾,則它會返回該引數。
在 Python 中使用 DictReader 物件逐行讀取 CSV 檔案
csv.reader 讀取並列印 CSV 檔案作為列表。
但是,DictReader 物件將 CSV 檔案的行作為字典進行迭代。csv.reader 將每一行作為列表返回,ObjectReader 將每一行作為字典返回。
看下面的例子:
from csv import DictReader # open the file with open("Demo.csv", "r") as my_file: # passing file object to DictReader() csv_dict_reader = DictReader(my_file) # iterating over each row for i in csv_dict_reader: # print the values print(i) 輸出:
{'Roll Number': '1', 'Name': 'Harry Potter', 'Subject': 'Magical Creatures'} {'Roll Number': '2', 'Name': 'Ron Weasley', 'Subject': 'Divinition'} {'Roll Number': '3', 'Name': 'Hermione Granger', 'Subject': 'Dark arts'} DictReader 函式類似於 reader 函式,不同之處在於它返回資訊的方式。它將值對映並返回為字典,其中欄位名稱充當字典的鍵,值由特定行中的資料組成。
まとめ
在本文中,我們討論了 CSV 的基礎知識。我們還看到了在 Python 中逐行讀取 CSV 的兩種方法。我們還了解了如何使用記事本等文字編輯器自行建立 CSV 檔案。
相關文章 - Python CSV
- Python 逐行寫入 CSV
- 在 Python 中將列表寫入 CSV 列
- 使用 Python 將 XML 轉換為 CSV
- 在 Python 中合併 CSV 檔案
- 在 Python 中將 XLSX 轉換為 CSV 檔案