Python CSV:讀取和寫入電子表格

了解如何在 Python 中處理 CSV 資料。掌握 csv.reader、csv.writer 和 DictReader/DictWriter 以實現高效率的表格解析。

在編輯器中嘗試

概述

CSV(逗號分隔值)是一種普遍存在的格式,用於從電子表格和關係資料庫匯出和匯入資料。由於 CSV 文件是簡單的文本文件,因此它們受到分析工具、資料庫平台和程式語言的普遍支援。 Python 具有內建的「csv」模組,專門針對解析、寫入和操作表格資料進行了最佳化,而無需使用 pandas 等第三方程式庫。

csv 模組提供兩個主要介面:基於列表的讀取器/寫入器和基於字典的讀取器/寫入器。 `csv.reader()` 和 `csv.writer()` 將 CSV 中的每一行表示為字串列表,這很簡單,但需要透過數字索引來引用列。為了獲得更強大的方法,開發人員使用「csv.DictReader()」和「csv.DictWriter()」。這些類別使用 CSV 標題行作為鍵將每一行對應到字典,從而產生高度可讀的程式碼,即使對列重新排序也不會中斷。

處理 CSV 檔案時,語法細節很重要。不同的程式使用不同的分隔符號(如製表符或分號)並以不同的方式處理引號或行結尾。 「csv」模組可讓您透過「dialect」參數定義自訂分隔符號、引用規則和轉義字元。此外,在 Python 中開啟 CSV 檔案時,將 `newline=''` 傳遞給 `open()` 函數是一個關鍵要求,以防止不同作業系統之間出現空白行問題。

程式碼和執行輸出

使用 DictWriter 將資料寫入 CSV 檔案並使用 DictReader 讀回。

import csv

filename = "employees.csv"
fieldnames = ["id", "name", "department"]
data = [
    {"id": "101", "name": "Bob", "department": "HR"},
    {"id": "102", "name": "Alice", "department": "Engineering"}
]

# Write dict data to CSV
with open(filename, "w", newline="") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(data)

print("CSV written successfully.\n--- Reading CSV ---")

# Read CSV data back as dictionaries
with open(filename, "r", newline="") as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(f"Employee {row['name']} works in {row['department']}.")
端子輸出
CSV written successfully.
--- Reading CSV ---
Employee Bob works in HR.
Employee Alice works in Engineering.

逐步實施

  • 匯出電子表格記錄以進行財務分析
  • 將聯絡人清單目錄匯入資料庫
  • 格式化計算腳本的統計輸出

常見問題解答

為什麼開啟 CSV 檔案時需要指定 newline=""?

這是 csv 模組的內部編寫器所要求的,以防止插入額外的空白行,特別是在 Windows 平台上。

如何解析使用製表符而不是逗號的 CSV 檔案?

您可以將分隔符號參數傳遞給讀取器或寫入器,例如 csv.reader(file, delimiter='\t')。

相關主題

推薦的 Python 資源

透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。