HOWTO · Python

如何在 Python 中逐行寫入 CSV

學習如何使用兩種有效的方法在 Python 中逐行寫入 CSV 檔案:傳統檔案處理和 CSV writer 模組。本綜合指南提供清晰的程式碼範例、詳細的解釋,以及處理 CSV 資料的最佳實踐見解。無論你是初學者還是想要精進技能,本文都將幫助你掌握在 Python 中寫入 CSV 檔案。

本頁內容

將資料寫入 CSV 檔案是資料處理和操作中的一項常見任務。無論你是從資料庫匯出資料、記錄資訊,還是僅僅保存你的工作,了解如何在 Python 中寫入 CSV 檔案都非常有價值。實現這一點主要有兩種方法:傳統檔案處理方法和 CSV writer 方法。這兩種方法各有優勢,理解如何實現它們可以提高你的資料處理技能。

在本文中,我們將詳細探討這兩種方法,提供清晰的範例和解釋,幫助你掌握在 Python 中逐行寫入 CSV 檔案。(csv.writer();writerow())

方法 1:傳統檔案處理

傳統檔案處理方法涉及使用 Python 的內建檔案操作將資料寫入 CSV 檔案。這種方法讓你能對資料的寫入方式有很大的控制權,可以根據需要自訂輸出格式。具體做法如下:

data = [
    ['Name', 'Age', 'City'],
    ['Alice', 30, 'New York'],
    ['Bob', 25, 'Los Angeles'],
    ['Charlie', 35, 'Chicago']
]

with open('data.csv', 'w') as file:
    for line in data:
        file.write(','.join(map(str, line)) + '\n')

輸出:

在這種方法中,我們首先將資料定義為一個列表的列表,其中每個子列表代表 CSV 檔案中的一行。我們使用 with 陳述式以寫入模式('w')開啟檔案,這可確保檔案在寫入後正確關閉。在迴圈中,我們將子列表中的每個項轉換為字串(如有必要),並用逗號連接它們。最後,我們附加一個換行字元('\n')來分隔每一行。這種方法簡單直接,讓你可以靈活地按自己的意願格式化輸出。

方法 2:使用 CSV Writer 模組

Python 中的 CSV 模組提供了一種更結構化的處理 CSV 檔案的方式。它自動處理寫入 CSV 檔案所涉及的許多複雜問題,例如處理特殊字元和引號。以下是使用 CSV writer 的方法:

import csv

data = [
    ['Name', 'Age', 'City'],
    ['Alice', 30, 'New York'],
    ['Bob', 25, 'Los Angeles'],
    ['Charlie', 35, 'Chicago']
]

with open('data.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerows(data)

輸出:

在這種方法中,我們匯入 csv 模組並使用 csv.writer 函數建立一個 writer 物件。我們以寫入模式('w')開啟檔案,並指定 newline='' 以防止在 Windows 上出現額外的空行。writerows 方法允許我們一次寫入多行,這比逐行寫入更有效率。這種方法通常因其簡單性和可靠性而受到青睞,尤其是在處理較大的資料集或複雜的資料結構時。

結論

在 Python 中寫入 CSV 檔案可以使用傳統檔案處理或 CSV writer 模組有效地完成。每種方法都有其優勢,兩者之間的選擇通常取決於專案的具體要求。傳統方法在格式化方面提供更多控制,而 CSV 模組簡化了流程並減少了出錯的機會。透過掌握這兩種技術,你可以提高資料操作能力並簡化工作流程。

常見問題

  1. 什麼是 CSV 檔案?
    CSV 檔案是一個純文字檔案,其中包含以表格形式格式化的資料,每列代表一行,每個值以逗號分隔。

  2. 為什麼應該在 Python 中使用 CSV 模組?
    CSV 模組會自動處理特殊字元和引號,從而降低出錯的風險,並使你的程式碼更簡潔、更易於維護。

  3. 我可以在不覆蓋的情況下寫入現有的 CSV 檔案嗎?
    可以,你可以以附加模式('a')而不是寫入模式('w')開啟檔案,以新增資料而不刪除現有內容。

  4. 如何在 Python 中讀取 CSV 檔案?
    你可以使用 CSV 模組的 csv.reader 函數讀取 CSV 檔案,它允許你輕鬆地遍歷各列。

  5. 這兩種方法之間有效能差異嗎?
    對於較小的資料集,效能差異可以忽略不計。但是,對於較大的資料集,使用 CSV 模組通常更有效率,也更不容易出錯。