Python3操作讀寫CSV檔案使用包過程解析
CSV(Comma-Separated Values)即逗號分隔值,一種以逗號分隔按行儲存的文字檔案,所有的值都表現為字串型別(注意:數字為字串型別)。
如果CSV中有中文,應以utf-8編碼讀寫,如果要支援Excel檢視,應是要用utf-8 with bom格式及utf-8-sig
Python3操作CSV檔案使用自帶的csv包
reader=csv.reader(f,delimiter=','):用來讀取資料,reader為生成器,每次讀取一行,每行資料為列表格式,可以通過delimiter引數指定分隔符
writer=csv.writer(f):用來寫入資料,按行寫入,writer支援writerow(列表)單行寫入,和writerows(巢狀列表)批量寫入多行,無須手動儲存。
當檔案中有標題行時,可以使用header=next(reader)先獲取到第一行的資料,再進行遍歷所有的資料行。
寫入時,可以先使用writer.writerow(標題行列表),寫入標題行,再使用writer.writerows(多行資料巢狀列表),寫入多行資料(也可以逐行寫入)。
資料檔案data.csv:
name,password
abc,123456
張五,123#456
張#abc123,123456
666,123456
a b,123456
讀取示例:
import csv with open('data.csv',encoding='utf-8') as f: reader = csv.reader(f) header = next(reader) print(header) for row in reader: print(row)
注意:reader必須在檔案開啟的上下文中使用,否則檔案被關閉後reader無法使用
所有的數字被作為字串,如果要使用數字格式,應使用int()/float()做相應轉換
寫入示例:
import csv header = ['name','password','status'] data = [ ['abc','123456','PASS'],['張五','123#456',['張#abc123',['666',['a b','PASS'] ] with open('result.csv','w',encoding='utf-8',newline='') as f: writer = csv.writer(f) writer.writerow(header) writer.writerows(data)
注意,開啟檔案時應指定格式為w,文字寫入,不支援wb,二進位制寫入,當然,也可以使用a/w+/r+
開啟檔案時,指定不自動新增新行newline='',否則每寫入一行就或多一個空行。
如果想寫入的檔案Excel開啟沒有亂碼,utf-8可以改為utf-8-sig。
結果展示,result.csv內容::
name,password,status
abc,123456,PASS
張五,123#456,PASS
張#abc123,PASS
666,PASS
a b,PASS
使用字典格式的資料:DictReader,DictWriter#
注意資料必須有標題行時才能使用
reader=csv.DictReader(f):直接將標題和每一列資料組裝成有序字典(OrderedDict)格式,無須再單獨讀取標題行
writer=csv.DictWriter(f,標題行列表):寫入時可使用writer.writeheader()寫入標題,然後使用writer.writerow(字典格式資料行)或write.writerows(多行資料)
讀取示例:
import csv with open('data.csv',encoding='utf-8') as f: reader = csv.DictReader(f) for row in reader: print(row['name'],row['password'])
寫入示例:
import csv header = ['name','status'] data = [ {'name':'abc','password':'123456','status':'PASS'},{'name':'張五','password':'123#456',{'name':'張#abc123',{'name':'666',{'name':'a b','status':'PASS'} ] with open('result2.csv',newline='') as f: writer = csv.DictWriter(f,header) writer.writeheader() writer.writerows(data)
寫入結果,同result.csv
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。