CSV(Comma-Separated Values)即逗號分隔值,可以用Excel打開查看。由於是純文本,任何編輯器也都可打開。與Excel文件不同,CSV文件中:
- 值沒有類型,所有值都是字符串
- 不能指定字體顏色等樣式
- 不能指定單元格的寬高,不能合並單元格
- 沒有多個工作表
- 不能嵌入圖像圖表
在CSV文件中,以,
作為分隔符,分隔兩個單元格。像這樣a,,c
表示單元格a
和單元格c
之間有個空白的單元格。依此類推。
不是每個逗號都表示單元格之間的分界。所以即使CSV是純文本文件,也堅持使用專門的模塊進行處理。Python內置了csv模塊。先看看一個簡單的例子
寫數據到csv文件中
有reader可以讀取,當然也有writer可以寫入。一次寫入一行,一次寫入多行都可以。
import csv # 使用數字和字符串的數字都可以 datas = [['name', 'age'], ['Bob', 14], ['Tom', 23], ['Jerry', '18']] with open('example.csv', 'w', newline='') as f: writer = csv.writer(f) for row in datas: writer.writerow(row) # 還可以寫入多行 writer.writerows(datas) 如果不指定newline='',則每寫入一行將有一空行被寫入。上面的代碼生成如下內容。 name,age Bob,14 Tom,23 Jerry,18 name,age Bob,14 Tom,23 Jerry,18
DictReader和DictWriter對象
使用DictReader可以像操作字典那樣獲取數據,把表的第一行(一般是標頭)作為key。可訪問每一行中那個某個key對應的數據。
import csv filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv' with open(filename) as f: reader = csv.DictReader(f) for row in reader: # Max TemperatureF是表第一行的某個數據,作為key max_temp = row['Max TemperatureF'] print(max_temp)
使用DictWriter類,可以寫入字典形式的數據,同樣鍵也是標頭(表格第一行)。
import csv headers = ['name', 'age'] datas = [{'name':'Bob', 'age':23}, {'name':'Jerry', 'age':44}, {'name':'Tom', 'age':15} ] with open('example.csv', 'w', newline='') as f: # 標頭在這里傳入,作為第一行數據 writer = csv.DictWriter(f, headers) writer.writeheader() for row in datas: writer.writerow(row) # 還可以寫入多行 writer.writerows(datas)