首頁 > 軟體

Python 修改CSV檔案範例詳解

2022-08-26 14:02:19

前言

由於 CSV 檔案僅僅是簡單的文字檔案,因此更新 CSV 檔案中內容的最佳方式是首先讀取檔案中的資料,並將它們處理為 Python 內部物件,進行更改,然後以相同的格式覆蓋原始資料。

Python 修改CSV檔案

在本節中,我們將學習如何使用 Python 修改 CSV 檔案中的資料。

假設在CSV檔案中有以下資料,其中使用者 '1' 對電影 'Star Wars' 的評分有誤,其實際評分為 7.9,因此需要修改此檔案。

User nameMovie namerating
1Star Wars7.8
2Back to Future8
2Batman7.7
3Spy 0078.3

首先,匯入 csv 模組並定義檔名:

>>> import csv
>>> file_name = 'movies_rating.csv'

匯入 csv 模組後,我們從指定 csv 檔案中提取所有資料。為了便於操作,我們在 with 塊中開啟該檔案,在檔案使用完畢後可以自動關閉檔案控制程式碼。

使用 DictReader 可以非常方便地將資料轉換為字典列表,其中檔頭作為鍵,單元格中的內容作為值,例如第一行的資料被轉換為 {'User name': 1, 'Movie name': 'Star Wars', 'rating':7.8}

然後,我們可以操作和修改格式化後的資料。

使用 DictReader 讀取檔案的內容並將此內容轉換為資料行的列表:

>>> with open(file_name, newline='') as f:
...     data = [row for row in csv.DictReader(f)]
...

檢查獲得的資料,將檔案中第一個評分記錄中的評分資料從 7.8 修改為 7.9,解決資料錯誤問題:

>>> data
[OrderedDict([('User name', '001'), ('Movie name', 'Star Wars'), ('rating', '7.8')]), OrderedDict([('User name', '002'), ('Movie name', 'Back to Future'), ('rating', '8.0')]), OrderedDict([('User name', '002'), ('Movie name', 'Batman'), ('rating', '7.7')]), OrderedDict([('User name', '003'), ('Movie name', 'Spy 007'), ('rating', '8.3')])]
>>> data[0]['rating']
'7.8'
>>> data[0]['rating'] = 7.9

在本節中,我們通過直接存取行號來修改資料,但在通常情況下,我們可能需要首先搜尋特定資訊,確定相應行後再進行修改。

再次開啟檔案並儲存修改後的資料記錄:

>>> header = data[0].keys()
>>> with open(file_name, 'w', newline='') as f:
...     writer = csv.DictWriter(f, fieldnames=header)
...     writer.writeheader()
...     writer.writerows(data)
...

資料修改後,我們直接覆蓋原檔案並使用 DictWriter 儲存資料。DictWriter 需要通過宣告欄位名 (fieldnames=header) 來定義列上的欄位,為了獲得這些欄位名,我們可以先讀取其中一行資料字典的鍵並將它們儲存在 header 中。

原檔案以 w 模式再次開啟以覆蓋它。DictWriter 首先使用 writeheader 儲存檔頭,然後通過呼叫 writerows() 一次儲存所有行。我們也可以通過呼叫 writerow() 方法每次寫入一行資料。

在電子試算表軟體中檢查結果。在下圖中可以看到,該檔案使用 WPS 軟體開啟顯示,可以看到第一行的評分資料已經被修改:

以上就是Python 修改CSV檔案範例詳解的詳細內容,更多關於Python 修改CSV檔案的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com