Python 修改CSV文件實例詳解
前言
由于 CSV
文件僅僅是簡單的文本文件,因此更新 CSV
文件中內(nèi)容的最佳方式是首先讀取文件中的數(shù)據(jù),并將它們處理為 Python
內(nèi)部對象,進(jìn)行更改,然后以相同的格式覆蓋原始數(shù)據(jù)。
Python 修改CSV文件
在本節(jié)中,我們將學(xué)習(xí)如何使用 Python
修改 CSV
文件中的數(shù)據(jù)。
假設(shè)在CSV文件中有以下數(shù)據(jù),其中用戶 '1
' 對電影 'Star Wars
' 的評分有誤,其實際評分為 7.9
,因此需要修改此文件。
User name | Movie name | rating |
---|---|---|
1 | Star Wars | 7.8 |
2 | Back to Future | 8 |
2 | Batman | 7.7 |
3 | Spy 007 | 8.3 |
首先,導(dǎo)入 csv
模塊并定義文件名:
>>> import csv >>> file_name = 'movies_rating.csv'
導(dǎo)入 csv
模塊后,我們從指定 csv
文件中提取所有數(shù)據(jù)。為了便于操作,我們在 with
塊中打開該文件,在文件使用完畢后可以自動關(guān)閉文件句柄。
使用 DictReader
可以非常方便地將數(shù)據(jù)轉(zhuǎn)換為字典列表,其中標(biāo)頭作為鍵,單元格中的內(nèi)容作為值,例如第一行的數(shù)據(jù)被轉(zhuǎn)換為 {'User name': 1, 'Movie name': 'Star Wars', 'rating':7.8}
。
然后,我們可以操作和修改格式化后的數(shù)據(jù)。
使用 DictReader
讀取文件的內(nèi)容并將此內(nèi)容轉(zhuǎn)換為數(shù)據(jù)行的列表:
>>> with open(file_name, newline='') as f: ... data = [row for row in csv.DictReader(f)] ...
檢查獲得的數(shù)據(jù),將文件中第一個評分記錄中的評分?jǐn)?shù)據(jù)從 7.8
修改為 7.9
,解決數(shù)據(jù)錯誤問題:
>>> 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
在本節(jié)中,我們通過直接訪問行號來修改數(shù)據(jù),但在通常情況下,我們可能需要首先搜索特定信息,確定相應(yīng)行后再進(jìn)行修改。
再次打開文件并存儲修改后的數(shù)據(jù)記錄:
>>> header = data[0].keys() >>> with open(file_name, 'w', newline='') as f: ... writer = csv.DictWriter(f, fieldnames=header) ... writer.writeheader() ... writer.writerows(data) ...
數(shù)據(jù)修改后,我們直接覆蓋原文件并使用 DictWriter
存儲數(shù)據(jù)。DictWriter
需要通過聲明字段名 (fieldnames=header
) 來定義列上的字段,為了獲得這些字段名,我們可以先讀取其中一行數(shù)據(jù)字典的鍵并將它們存儲在 header
中。
原文件以 w
模式再次打開以覆蓋它。DictWriter
首先使用 writeheader
存儲標(biāo)頭,然后通過調(diào)用 writerows()
一次存儲所有行。我們也可以通過調(diào)用 writerow()
方法每次寫入一行數(shù)據(jù)。
在電子表格軟件中檢查結(jié)果。在下圖中可以看到,該文件使用 WPS
軟件打開顯示,可以看到第一行的評分?jǐn)?shù)據(jù)已經(jīng)被修改:
以上就是Python 修改CSV文件實例詳解的詳細(xì)內(nèi)容,更多關(guān)于Python 修改CSV文件的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
anaconda中安裝的python環(huán)境中沒有pip3的問題及解決
這篇文章主要介紹了anaconda中安裝的python環(huán)境中沒有pip3的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02虛擬環(huán)境及venv和virtualenv的區(qū)別說明
這篇文章主要介紹了虛擬環(huán)境及venv和virtualenv的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02python使用magic模塊進(jìn)行文件類型識別方法
今天小編就為大家分享一篇python使用magic模塊進(jìn)行文件類型識別方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12在linux下實現(xiàn) python 監(jiān)控usb設(shè)備信號
今天小編就為大家分享一篇在linux下實現(xiàn) python 監(jiān)控usb設(shè)備信號,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07python之PyAutoGui教你做個自動腳本計算器的方法
這篇文章主要介紹了python之PyAutoGui教你做個自動腳本計算器的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Python動態(tài)規(guī)劃實現(xiàn)虛擬機(jī)部署的算法思想
這篇文章主要介紹了Python動態(tài)規(guī)劃實現(xiàn)虛擬機(jī)部署的算法思想,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-07-07