python3讀寫csv格式檔案
什麼是csv格式
逗號分隔值(Comma-Separated Values,CSV,有時也稱為字元分隔值,因為分隔字元也可以不是逗號),其檔案以純文字形式儲存表格資料(數字和文字)。
CSV檔案由任意數目的記錄組成,記錄間以某種換行符分隔;
每條記錄由欄位組成,欄位間的分隔符是其它字元或字串,最常見的是逗號或製表符。
所有記錄都有完全相同的欄位序列,通常都是純文字檔案。
建議用nodepad++、sublime等編輯器進行編輯。
csv格式規則
-
開頭是不留空,以行為單位。
-
可含或不含列名,含列名則居檔案第一行。
-
一行資料不跨行,無空行。
-
以半形逗號(即,)作分隔符,列為空也要表達其存在。
-
列內容如存在半形引號(即"),替換成半形雙引號("")轉義,即用半形引號(即"")將該欄位值包含起來。
-
檔案讀寫時引號,逗號操作規則互逆。
-
內碼格式不限,可為 ASCII、Unicode 或者其他。
-
不支援特殊字元
Python csv模組
csv模式是python內建的標準模組,用於讀寫csv格式的檔案。
在csv模組中提供了reader、writer來讀寫csv格式的檔案,下面我們一起看下這個兩個函式使用示例。
示例功能:
-
先使用writer函式寫一個csv檔案
-
使用reader函式讀取上述步驟寫的csv檔案內容,並在console中輸出
#-*- coding:utf-8 -*-
if __name__ == "__main__": print("python csv檔案寫讀操作示例")
# 寫csv檔案 print("寫入一些簡單資料到csv_data.csv檔案中")
with open('csv_data.csv', 'w', newline='') as csvfile: spamwriter = csv.writer(csvfile, # 為開啟要寫的檔案物件 delimiter=',' # 分隔符 ) spamwriter.writerow(['csv_demo'
'Study Python3', 'Auto Testing']) csvfile.close() print("讀取csv_data.csv問內容")
with open('csv_data.csv', 'r') as f: reader = csv.reader(f, delimiter=',')
for row in reader: print("row的型別: ", type(row)) print(row)
# 遍歷每行中每個資料項 for data in row: print(data, " ") f.close()
在Python csv模組中還提供了另外一種方式來讀寫csv檔案,就是通過字典方式來讀寫,其提供的主要方法為:DictReader、DictWriter,下面我們一起一個基本的示例,大家可以根據這個示例與上面的示例進行對比,看看有什麼不同。
#-*- coding:utf-8 -*-
import csv
if __name__ == "__main__":
print("python csv檔案字典寫讀操作示例")
# 寫csv檔案
print("寫入一些簡單資料到csv_dict_data.csv檔案中")
with open('csv_dict_data.csv', 'w') as csvfile:
# 寫csv頭
fieldnames = ['first_name', 'last_name']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
# 寫csv內容
writer.writerow({'first_name': 'Baked',
'last_name': 'Beans'})
writer.writerow({'first_name': 'Lovely',
'last_name': 'Spam'})
writer.writerow({'first_name': 'Wonderful',
'last_name': 'Spam'})
print("讀取csv_dict_data.csv問內容")
with open('csv_dict_data.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
# 遍歷每行中的資料
print(row['first_name'], row['last_name'])
本文介紹了csv讀寫的兩種方式,大家可以仔細比對二者的區別,掌握其應用場景。
來源於網路,如若侵犯您的權益,請留言聯絡我,我會第一時間處理!