Python 寫入csv 檔案 - ShengYu Talk

文章推薦指數: 80 %
投票人數:10人

本篇介紹如何用python write csv 檔案,csv 檔案格式是常用格式,以下將示範如何用python 的內建csv 模組的csv.writer 來寫入csv 檔案。

2020-01-29 Python教學 本篇介紹如何用pythonwritecsv檔案,csv檔案格式是常用格式,以下將示範如何用python的內建csv模組的csv.writer來寫入csv檔案。

Python寫入csv的基本用法 把list裡的資料寫入csv 把2維list裡的資料寫入csv 把dict裡的資料寫入csv 用numpy套件寫入csv 用pandas套件寫入csvPython寫入csv的基本用法這邊介紹Python使用內建的csv模組寫入csv檔的基本用法,以下範例是使用withopen的寫法來開檔,之後在使用csv.writer取得writer,之後可以呼叫writerow將每行的數值寫入,記得要設定newline的值,否則Python寫入輸出的csv檔會多個空行。

Pythonwritecsv用法範例如下,python3-csv-write2.py1234567891011#!/usr/bin/envpython3#-*-coding:utf-8-*-importcsvpath='output_data.csv'withopen(path,'w',newline='')ascsvfile:writer=csv.writer(csvfile)writer.writerow(['No','Name','Score'])writer.writerow([1,'Tom',87.3])writer.writerow([2,'Mary',76.4])writer.writerow([3,'Mark',65.5]) 輸出結果如下:1234No,Name,Score1,Tom,87.32,Mary,76.43,Mark,65.5 把list裡的資料寫入csv假如我們要寫入的資料是存放在list的話可以這樣子寫,python3-csv-write3.py123456789101112131415#!/usr/bin/envpython3#-*-coding:utf-8-*-importcsvheaders=['No','Name','Score']ids=[1,2,3]names=['Tom','Mary','Mark']scores=[87.3,76.4,65.5]path='output_data.csv'withopen(path,'w',newline='')ascsvfile:writer=csv.writer(csvfile)writer.writerow(headers)foriinrange(len(ids)):writer.writerow([ids[i],names[i],scores[i]]) 輸出結果同上。

把2維list裡的資料寫入csv假如我們要寫入的資料是2維list的話可以這樣子寫,python3-csv-write4.py123456789101112131415#!/usr/bin/envpython3#-*-coding:utf-8-*-importcsvmy2dlist=[['No','Name','Score'],[1,'Tom',87.3],[2,'Mary',76.4],[3,'Mark',65.5]]path='output_data.csv'withopen(path,'w',newline='')ascsvfile:writer=csv.writer(csvfile)writer.writerows(my2dlist) 輸出結果同上。

把dict裡的資料寫入csv假如我們要寫入的資料是存放在dict的話可以這樣子寫,python3-csv-write5.py123456789101112131415161718#!/usr/bin/envpython3#-*-coding:utf-8-*-importcsvmydict1={'No':1,'Name':'Tom','Score':87.3}mydict2={'No':2,'Name':'Mary','Score':76.4}mydict3={'No':3,'Name':'Mark','Score':65.5}path='output_data.csv'withopen(path,'w',newline='')ascsvfile:writer=csv.writer(csvfile)headers=['No','Name','Score']writer=csv.DictWriter(csvfile,fieldnames=headers)writer.writeheader()writer.writerow(mydict1)writer.writerow(mydict2)writer.writerow(mydict3) 寫得更好的點話,可以把這3個dict放在list裡,python3-csv-write6.py12345678910111213141516171819#!/usr/bin/envpython3#-*-coding:utf-8-*-importcsvmylist=[{'No':1,'Name':'Tom','Score':87.3},#dict{'No':2,'Name':'Mary','Score':76.4},#dict{'No':3,'Name':'Mark','Score':65.5}#dict]path='output_data.csv'withopen(path,'w',newline='')ascsvfile:writer=csv.writer(csvfile)headers=['No','Name','Score']writer=csv.DictWriter(csvfile,fieldnames=headers)writer.writeheader()foriinrange(len(mylist)):writer.writerow(mylist[i]) 輸出結果同上。

用numpy套件寫入csv前面的方法都是使用內建的csv模組,這邊要介紹使用numpy模組來寫入csv檔,以下用np.savetxt()將2維的list寫入csv,python3-csv-write7.py12345678910111213#!/usr/bin/envpython3#-*-coding:utf-8-*-importnumpyasnpmy2dlist=[['No','Name','Score'],[1,'Tom',87.3],[2,'Mary',76.4],[3,'Mark',65.5]]path='output_data.csv'np.savetxt(path,my2dlist,delimiter=',',fmt='%s') 輸出結果同上。

假如是要將numpyarray寫入csv檔的話,就像這樣寫,python3-csv-write8.py12345678910111213#!/usr/bin/envpython3#-*-coding:utf-8-*-importnumpyasnpmy2dlist=np.asarray([['No','Name','Score'],[1,'Tom',87.3],[2,'Mary',76.4],[3,'Mark',65.5]])path='output_data.csv'np.savetxt(path,my2dlist,delimiter=',',fmt='%s') 輸出結果同上。

用pandas套件將list寫入csv這邊要介紹使用pandas模組來將2維的list寫入csv檔,python3-csv-write9.py1234567891011121314#!/usr/bin/envpython3#-*-coding:utf-8-*-importpandasaspdheaders=['No','Name','Score']my2dlist=[[1,'Tom',87.3],[2,'Mary',76.4],[3,'Mark',65.5]]path='output_data.csv'df=pd.DataFrame(columns=headers,data=my2dlist)df.to_csv(path)#index=True 輸出的結果如下,發現左邊有多一欄index索引欄位,1234,Name,No,Score0,Tom,1,87.31,Mary,2,76.42,Mark,3,65.5 如果要去除左邊的index索引欄位的話在to_csv()加入index=False即可,1df.to_csv(path,index=False) 輸出的結果如下,就沒有左邊的index那一欄,這樣就跟原本的輸出一樣了,1234No,Name,Score1,Tom,87.32,Mary,76.43,Mark,65.5 用pandas套件將dict寫入csv這邊要介紹使用pandas模組來將dict寫入csv檔,python3-csv-write10.py123456789101112#!/usr/bin/envpython3#-*-coding:utf-8-*-importpandasaspdids=[1,2,3]names=['Tom','Mary','Mark']scores=[87.3,76.4,65.5]mydict={'No':ids,'Name':names,'Score':scores}path='output_data.csv'df=pd.DataFrame(mydict)df.to_csv(path,index=False) 結果跟原本的差不多,只是欄位順序沒有按照我們放入的順序而已,1234Name,No,ScoreTom,1,87.3Mary,2,76.4Mark,3,65.5 以上就是Python寫入csv檔案的介紹,如果你覺得我的文章寫得不錯、對你有幫助的話記得Facebook按讚支持一下! 其它參考csv—CSVFileReadingandWriting—Python3documentationhttps://docs.python.org/3/library/csv.html#csv.writer 相關主題Python讀取csv檔案Python讀檔,讀取txt文字檔Python讀寫檔案Python使用numpy讀取csv資料再畫圖Pythonnumpy寫入csv Newer Python讀取yaml檔案 Older Pythonreplace取代字串用法與範例 精選文章 Python基礎教學目錄 C/C++入門教學目錄 Linux常用指令教學懶人包 最新文章 macOS安裝Node.js的方法 PythonSimpleHTTPServerWithUpload上傳檔案功能 adb查詢AndroidSDK版本號(adbshellgetprop) adb查詢Android版本號(adbshellgetprop) VisualStudioCode關閉存檔自動排版的2種方式 粉絲專頁 分類 Arduino4C/C++教學150Github13Git教學19OpenCV教學8Projects6Python教學225Qt教學7 首頁 Python教學 C/C++教學 歸檔 標籤 Projects 關於我



請為這篇文章評分?