Python-csv庫進行數據保存和讀寫

在 Python 中使用 CSV 文件非常簡單,Python 提供了內置的 csv 模塊來處理 CSV 文件。你可以使用 csv 模塊來讀取、寫入和操作 CSV 文件中的數據。

基礎使用

讀取 CSV 文件

python
import csv# 打開 CSV 文件進行讀取
with open('file.csv', mode='r') as file:reader = csv.reader(file)  # 創建 CSV 讀取器對象for row in reader:print(row)  # 逐行打印 CSV 文件中的數據

寫入 CSV 文件

python
import csv# 寫入數據到 CSV 文件
data = [['Name', 'Age', 'Gender'],['Alice', 25, 'Female'],['Bob', 28, 'Male'],['Cathy', 22, 'Female']
]with open('output.csv', mode='w', newline='') as file:writer = csv.writer(file)  # 創建 CSV 寫入器對象writer.writerows(data)  # 將數據寫入到 CSV 文件

在這兩個示例中,首先需要導入 csv 模塊。使用 with open() 打開 CSV 文件并指定文件模式('r' 表示讀取,'w' 表示寫入)。然后使用 csv.reader()csv.writer() 創建讀取器或寫入器對象。讀取器可以逐行讀取 CSV 文件的內容,寫入器可以將數據寫入到 CSV 文件中。

更多使用技巧

1. 處理不同格式的分隔符

有時 CSV 文件中的字段可能不是用逗號分隔的,可能會使用其他字符作為分隔符,比如制表符 \t。你可以在讀取和寫入時指定不同的分隔符。

讀取不同分隔符的 CSV 文件:

# 使用制表符作為分隔符讀取 CSV 文件
with open('file.tsv', mode='r') as file:reader = csv.reader(file, delimiter='\t')  # 指定分隔符為制表符for row in reader:print(row)

寫入不同分隔符的 CSV 文件:

# 使用分號作為分隔符寫入 CSV 文件
data = [['Name', 'Age', 'Gender'],['Alice', 25, 'Female'],['Bob', 28, 'Male'],['Cathy', 22, 'Female']
]with open('output.csv', mode='w', newline='') as file:writer = csv.writer(file, delimiter=';')  # 指定分隔符為分號writer.writerows(data)

2. 處理包含引號的數據

有些 CSV 文件中的字段可能包含引號,這時在處理時可能會出現問題。你可以指定引號的處理方式,以便正確讀取包含引號的字段。

# 處理包含引號的數據
with open('file.csv', mode='r') as file:reader = csv.reader(file, quoting=csv.QUOTE_MINIMAL)  # 指定引號處理方式for row in reader:print(row)

3. 處理文件編碼

在處理 CSV 文件時,特別是處理非英文字符時,確保指定文件的正確編碼方式,以免出現亂碼問題。

# 指定文件編碼方式
with open('file.csv', mode='r', encoding='utf-8') as file:reader = csv.reader(file)for row in reader:print(row)

4. 考慮使用 DictReaderDictWriter

除了 csv.reader()csv.writer() 外,csv 模塊還提供了 csv.DictReader()csv.DictWriter(),它們可以將每一行數據作為字典進行處理,使用列標題作為字典的鍵。

# 使用 DictReader 讀取 CSV 文件
with open('file.csv', mode='r') as file:reader = csv.DictReader(file)for row in reader:print(row['Name'], row['Age'], row['Gender'])
python
# 使用 DictWriter 寫入 CSV 文件
fieldnames = ['Name', 'Age', 'Gender']
data = [{'Name': 'Alice', 'Age': 25, 'Gender': 'Female'},{'Name': 'Bob', 'Age': 28, 'Gender': 'Male'},{'Name': 'Cathy', 'Age': 22, 'Gender': 'Female'}
]with open('output.csv', mode='w', newline='') as file:writer = csv.DictWriter(file, fieldnames=fieldnames)writer.writeheader()writer.writerows(data)

這些技巧可以幫助你更好地使用 csv 模塊處理不同格式的 CSV 文件,同時避免一些常見的問題,如分隔符問題、引號處理和文件編碼等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165818.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165818.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165818.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NVM得介紹和詳細使用教程

NVM???????(Node Version Manager)是一個用于管理多個Node.js版本的工具。它允許您在同一臺計算機上輕松地切換和管理不同的Node.js版本。以下是NVM的介紹和詳細使用教程: 安裝NVM: 首先,您需要在計算機上安裝N…

C#串口通信從入門到精通(27)——高速通信下解決數據處理慢的問題(20ms以內)

前言 我們在開發串口通信程序時,有時候會遇到比如單片機或者傳感器發送的數據速度特別快,比如10ms、20ms發送一次,并且每次發送的數據量還比較大,如果按照常規的寫法,我們會發現接收的數據還沒處理完,新的數據又發送過來了,這就會導致處理數據滯后,軟件始終處理的不是…

python樹的雙親存儲結構

這種存儲結構是一種順序存儲結構,采用元素形如“[結點值,雙親結點索引]”的列表表示。通常每個結點有唯一的索引(或者偽地址),根結點的索引為0,它沒有雙親結點,其雙親結點的索引為-1。例如,所示的樹對應的雙…

123. 股票買賣的最佳時機III(2次交易)

題目 題解 class Solution:def maxProfit(self, prices: List[int]) -> int:N len(prices)# 狀態定義 dp[i][j][k]代表在第i天,被允許完成j次交易時,持有或者不持有的最大利潤。k0代表不持有,k1代表持有dp [[[0 for k in range(2)] for…

醫學生秋招攻略,面試時一定要注意這些方面!

醫學生別拖了,今年秋招已經過去一波熱度了,趕早不趕晚!在籌備第二輪秋招以及明年的春招的醫學生一定要注意以下事項。 1.清晰目標 搜集秋招訊息 一定要早點多做準備,想清楚未來的目標,是繼續深造還是就業做醫生或者是…

FileReader與URL.createObjectURL實現圖片、視頻上傳預覽

之前做圖片、視頻上傳預覽常用的方案是先把文件上傳到服務器,等服務器返回文件的地址后,再把該地址字符串賦給img或video的src屬性,這才實現所謂的文件預覽。實際上這只是文件“上傳后再預覽”,這既浪費了用戶的時間,也…

java開發合同相關

【點我-這里送書】 本人詳解 作者:王文峰,參加過 CSDN 2020年度博客之星,《Java王大師王天師》 公眾號:JAVA開發王大師,專注于天道酬勤的 Java 開發問題中國國學、傳統文化和代碼愛好者的程序人生,期待你的關注和支持!本人外號:神秘小峯 山峯 轉載說明:務必注明來源(…

集合的分類

Python內建的集合類,有有序和無序之分,還有可修改和不可修改之分。 1 有序和無序 有序是說某數據集合中的每個元素都有一個位置信息,通常用index表示,可以借助這種集合類型名和位置信息訪問集合里的某元素值,在Pytho…

【開源】基于Vue.js的用戶畫像活動推薦系統

項目編號: S 061 ,文末獲取源碼。 \color{red}{項目編號:S061,文末獲取源碼。} 項目編號:S061,文末獲取源碼。 目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 數據中心模塊2.2 興趣標簽模塊2.3 活…

[Android]使用Git將項目提交到GitHub

如果你的Mac還沒有安裝Git,你可以通過Homebrew來安裝它: brew install git 方式一:終端管理 1.創建本地Git倉庫 在項目的根目錄下,打開終端(Terminal)并執行以下命令來初始化一個新的Git倉庫&#xff1…

vue3-組件傳參及計算屬性

?🌈個人主頁:前端青山 🔥系列專欄:Vue篇 🔖人終將被年少不可得之物困其一生 依舊青山,本期給大家帶來vue篇專欄內容:vue3-組件傳參及計算屬性 目錄 vue3中的組件傳參 1、父傳子 2、子傳父 toRef 與 toRefs vue3中…

數據結構 查找基本概念

敬請期待。。。 1. 適用于折半查找的表的存儲方式及元素排列要求為(順序方式存儲,元素有序 )。 2. 有一個按元素值排好序的順序表(長度大于2),分別用順序查找和折半查找與給定值相等的元素,比較次數分別是s和b&am…

拼接合并yuv序列轉成mp4

ffmpeg需要用支持libx264的版本,如果需要,可以從這個網站下載編譯支持libx264\x265的ffmpeg https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-6.1-essentials_build.7z #-*- coding:utf-8-*- import osif __name__ "__main__":# 1 輸入…

實例講解:在3dMax中如何使用python腳本?

如果你是Python或Maxscript的新手,你現在可以跟著這篇文章開始做一些代碼了,本文將讓我們從非常基本的東西開始學習。 如何在3dmax中獲取選定的節點并打印出它們的名稱?所有場景對象如何?我們直接看代碼: import MaxP…

Word/PPT/PDF怎么免費轉為JPG圖片?

1、打開金鳴表格文字識別網站。 2、點擊導航條上的“軟件下載” 3、安裝并打開金鳴表格文字識別軟件。 4、點擊頂部導航欄的“文件轉圖片”。 5、選擇需要轉換成圖片的文件(支持Word/PPT/PDF). 6、點“打開”程序將自動分頁轉換為圖片。

【論文閱讀筆記】Smil: Multimodal learning with severely missing modality

Ma M, Ren J, Zhao L, et al. Smil: Multimodal learning with severely missing modality[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2021, 35(3): 2302-2310.[開源] 本文的核心思想是探討和解決多模態學習中的一個重要問題:在訓練和測…

【dart線程之怎么處理異步和順序異步任務隊列】

dart線程之怎么處理異步和順序異步任務隊列 單線程的dart怎么處理異步任務的? 事件循環模型就是實現異步處理任務的核心。 關于阻塞式調用和非阻塞式調用的概念 阻塞和非阻塞關注的是程序在等待調用結果(消息、返回值)時的狀態阻塞式調用…

JS中的OOP

JS中的OOP OOP 為我們解決了什么問題?想象一下,我們希望為教師提供一個平臺,每位注冊的教師都可以提交分數,并為課程分配作業和其他內容。 如果有一個地方(在本例中是一個對象),可以訪問所有教…

Python編寫的爬蟲為什么受歡迎?

每每回想起我當初學習python爬蟲的經歷,當初遇到的各種困難險阻至今都歷歷在目。即便當初道阻且長,窮且益堅,我也從來沒有想過要放棄。今天我將以我個人經歷,和大家聊一聊有關Python語音編寫的爬蟲的事情。談一談為什么最近幾年py…

C#中的事件(委托的發布和訂閱、事件的發布和訂閱、EventHandler類、Windows事件)

目錄 一、委托的發布和訂閱 1.訂閱操作符號“"和取消訂閱操作符號“-” 2.示例源碼 二、事件的發布和訂閱 三、EventHandler類 四、Windows事件 C#中的事件是指某個類的對象在運行過程中遇到的一些特定事情,而這些特定的事情有必要通知給這個對象的使用者…