CSV(Comma-Separated Values)即逗號分隔值,可以用Excel打開查看。由於是純文本,任何編輯器也都可打開。與Excel文件不同,CSV文件中:
值沒有類型,所有值都是字符串,不能指定字體顏色等樣式,不能指定單元格的寬高,不能合並單元格沒有多個工作表,不能嵌入圖像圖表
在CSV文件中,以,作為分隔符,分隔兩個單元格。像這樣a,,c表示單元格a和單元格c之間有個空白的單元格。依此類推。
不是每個逗號都表示單元格之間的分界。所以即使CSV是純文本文件,也堅持使用專門的模塊進行處理。Python內置了csv模塊。先看看一個簡單的例子。
1 import csv 2 data =[ 3 #使用數字和字符串的數字都可以 4 ("ken","mafe",23), 5 ("Tame","maee",29), 6 ("Js","dggd",26)] 7 with open("d://test.csv",'w',newline='')as t_file: 8 csv_writer = csv.writer(t_file) 9 for l in data: 10 csv_writer.writerow(l)
第二步運行py文件之后,我們可以看到d盤已經創建了test.csv文件,如下圖所示:
第三步打開test.csv文件,可以看到已經將內容寫入到csv文件中了:
上面就簡單介紹了csv的寫,下面來看一下csv讀的方法:
第一步,輸入
1 import csv 2 reader =csv.reader(open('d://test.csv'))#打開 3 for list in reader: 4 print(list)
在寫入字典序列類型數據的時候,需要傳入兩個參數,一個是文件對象——f,一個是字段名稱——fieldnames,到時候要寫入表頭的時候,只需要調用writerheader方法,寫入一行字典系列數據調用writerrow方法,並傳入相應字典參數,寫入多行調用writerows
1 import csv 2 header=['name','age'] 3 data =[ 4 {'name':'mafe','age':23}, 5 {'name':'maee','age':29}, 6 {'name':'dggd','age':26}] 7 with open("d:\\test.csv",'w',newline='')as t_file: 8 #表頭在這里傳入,作為第一行數據 9 writer = csv.DictWriter(t_file,header) 10 writer.writeheader() 11 for l in data: 12 writer.writerow(l)
再打開test.csv結果如下:
假設csv文件的內容如上圖圖所示,用DictReader來讀取它
DictReader會將第一行的內容(類標題)作為key值,第二行開始才是數據內容。即圖中的csv文件有2列4行數據,第一列的key值為name,第二列的key值為age:
1 import csv 2 with open('d://test.csv',encoding='utf-8')as f: 3 reader =csv.DictReader(f)#字典表 DictReader 列表讀取 4 headers =next(reader)#迭代一次 5 print(headers) 6 for row in reader: 7 print(row)
運行結果如下:
最后提醒一下:
read方法的使用:打印出來的結果是數組類型,有文件中幾行數據就打印幾個數組,不區分表頭和值
DictReader方法的使用:打印出來的數據是字典類型,表格的表頭為鍵、每一行的值為值,值有幾行就打印幾個字典