點選跳轉
《Python入門系列目錄》
文章目錄
-
-
- 1. 讀取csv檔案
- 2. 寫入.csv檔案
-
- 逗号分隔值(Comma-Separated Values, CSV),通常用于轉移表格資料
- csv檔案由任意數目的記錄組成,記錄間以某種換行符分割
- 每條記錄由字段組成,字段間的分隔符是其他字元或字元串,最常見的分隔符是逗号或制表符
- 用指令import csv可直接調用csv子產品進行csv檔案的讀寫
1. 讀取csv檔案
- 讀取csv檔案之前需要用open函數打開檔案路徑
- 讀取csv檔案的方法有兩種
- csv.reader函數
- 接受一個可疊代的對象,能傳回一個生成器,從其中解析出csv的内容
- 利用csv.readerh函數讀取的資料存儲類型是清單
import csv file_name = 'iris.csv' with open(file_name, 'r') as f: reader = csv.reader(f) iris = [iris_item for iris_item in reader] print(iris) # 清單中的每一行都是一個清單,按csv檔案中每一行作為一個清單
* csv.DictReader函數 * 接受一個可疊代的對象,能傳回一個生成器,但傳回的每一個單元格都放在一個字典的值内,而字典的鍵則是這個單元格的标題(即列頭) ```python import csv file_name = 'iris.csv' with open(file_name, 'r') as f: reader = csv.DictReader(f) iris = [iris_item for iris_item in reader] print(iris)
- 如果用csv.DictReader函數讀取csv檔案的某一列,則可以用列的标題來查詢
import csv file_name = 'iris.csv' with open(file_name, 'r') as f: reader = csv.DictReader(f) column = [iris_item['sepal length (cm)'] for iris_item in reader] print(column)
- csv.reader函數
2. 寫入.csv檔案
- 對于清單形式的資料,除了csv.writer函數外,還需要用到writerow函數将資料逐行寫入csv檔案
import csv headers = ['Number', 'Name', 'Sex', 'Class', 'Chinese', "Math", 'English'] rows = [('101511', 'Jonh', 'M', 'Class 1', '72', '85', '82'), ('101513', 'May', 'F', 'Class 1', '75', '82', '51')] with open('test1.csv', 'w', newline='') as f: # 打開檔案 f_csv = csv.writer(f) # 建立csv.writer對象 f_csv.writerow(headers) # 寫入1行(标題) f_csv.writerows(rows) # 寫入多行(資料)
- 字典形式的資料,csv子產品提供了csv.DictWriter函數,除了提供open函數的參數外,還需要輸入字典所有鍵的資料,然後通過writeheader函數在檔案内添加标題,标題内容與鍵一緻,最後使用writerows函數将字典内容寫入檔案
import csv headers = ['Number', 'Name', 'Chinese', "Math", 'English'] rows = [{'Number': '101511', 'Name': 'May', 'Chinese': '72', 'Math': '85', 'English': '82'}, {'Number': '101513', 'Name': 'John', 'Chinese': '75', 'Math': '82', 'English': '51'}] with open('test2.csv', 'w', newline='') as f: f_csv = csv.DictWriter(f, headers) # 建立csv.DictWriter對象,(檔案名,标題) f_csv.writeheader() # 寫入标題,不用再傳參 f_csv.writerows(rows) # 寫入多行(資料)