如何在 Python 中讀取 CSV 檔案?


CSV 檔案代表逗號分隔值檔案。它是一個純文字檔案,其中資料值用逗號分隔,因此以純文字的形式表示表格資料,並藉助逗號進行分隔。CSV 檔案具有 .csv 副檔名。

以下是 CSV 檔案的外觀:

Sr.No,Name,City,Age
1,Rahul,Kolkata,21
2,Karan,Amritsar,23
3,Priya,Bangalore,20

要建立 CSV 檔案,您只需在記事本中以上述格式編寫檔案,並將其儲存為 .csv 副檔名即可。

在 Python 中讀取 CSV 檔案

儲存在系統本地儲存中的 csv 檔案可以使用 Python 讀取。

我們需要在 Python 中匯入 csv 模組。然後我們需要以讀取模式開啟檔案,因為我們需要從檔案中讀取資料。csv.reader() 函式用於讀取 CSV 檔案中的資料。csv.reader() 返回一個可迭代的讀取器物件。我們需要遍歷返回的可迭代讀取器物件來處理 csv 檔案的內容。

實現

讓我們有一個名為“ttp.csv”的 csv 檔案儲存在我們的本地系統中。檔案內容在上面的示例中顯示。我們需要讀取此檔案的內容並逐行列印檔案的內容。

示例

import csv
with open('ttp.csv','r')as file:
   filecontent=csv.reader(file)
   for row in filecontent:
   print(row)

注意:確保 csv 檔案和 Python 程式位於系統中的同一位置,即同一資料夾中。

輸出

['Sr.No', 'Name', 'City', 'Age']
['1', 'Rahul', 'Kolkata', '21']
['2', 'Karan', 'Amritsar', '23']
['3', 'Priya', 'Bangalore', '20']

逐行解釋

  • import csv - 需要在 Python 中匯入 csv 模組,以便使用此模組中包含的函式來讀取檔案。

  • 使用 open() 開啟檔案。open() 接受兩個引數,檔名和要開啟它的模式。這裡的模式是“r”,因為我們需要讀取檔案。

  • 使用 csv.reader() 讀取檔案內容。這將返回一個可迭代的讀取器物件,該物件將返回到一個變數。

  • 遍歷 filecontents 以逐行列印檔案內容。

csv 檔案和讀取它的 Python 程式必須位於同一位置。

要求 csv 檔案和 Python 程式位於同一位置或本地系統中的同一資料夾中。如果檔案位於其他位置,則會引發異常並給出以下輸出。

Traceback (most recent call last):
   with open('ttp.csv','r')as file:
FileNotFoundError: [Errno 2] No such file or directory: 'ttp.csv'

使用自定義分隔符讀取 CSV 檔案

逗號不是 csv 檔案中唯一使用的分隔符。其他使用的分隔符是:、;、| 等。如果使用其他分隔符而不是逗號,我們需要相應地修改程式碼。

實現

假設在上面的 csv 檔案中,使用的分隔符是“:”而不是逗號。因此程式碼將修改如下:

示例

import csv
with open('ttp.csv','r')as file:
   filecontent=csv.reader(file,delimiter=':')
   for row in filecontent:
      print(row)

輸出

['Sr', 'No', 'Name', 'City', 'Age']
['1', 'Rahul', 'Kolkata', '21']
['2', 'Karan', 'Amritsar', '23']
['3', 'Priya', 'Bangalore', '20']

程式碼中唯一的修改是在 csv.reader() 中指定 csv 檔案中使用的分隔符。如果使用的分隔符是“|”,則需要在程式碼中將其指定為分隔符。

如果未指定,則預設情況下程式碼只會將逗號視為分隔符,並且由於檔案中不存在逗號,因此整行將被視為單個專案。

如果未在上述程式碼中為上述使用“:”分隔符的檔案指定分隔符,則會產生以下錯誤輸出。

['Sr:No:Name:City:Age']
['1:Rahul:Kolkata:21']
['2:Karan:Amritsar:23']
['3:Priya:Bangalore:20']

如上述輸出所示,整行被視為單個專案。

更新於: 2021-03-11

4K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告