閒聊
在前五天學習了python的基礎後,今天要用pthon來處理文件了!(ง๑ •̀_•́)ง
什麼事CSV?
CSV,全名為Comma-Separated Values,由字上面來看是「逗號分隔值」(也稱為字元分隔值)。
是一份 純文字的檔案格式,以儲存表格資料。
CSV文件中的數據每條紀錄以欄位組成,同一列(row)的資料用,
或是其他符號隔開,且每一列數據資料是一筆資料(record)。
檔案的格式也不存在通用標準,也沒有指定所使用的字元編碼。
建立CSV文件
打開Excel,輸入好需要的資料(此資料皆為虛構,做舉例用而已)
存檔
建立完成
讀取CSV檔案
open()
。csvFile = open(檔案名稱) #開啟檔案並建立CSV物件csvFile
with open(檔案名稱) as csvFile : #csvFile可以自行命名
相關指令
reader()
可以建立Reader物件。line_num
,可以列出行號。1.list
#實作
import csv
fn = 'csvtest.csv' #csvtest.csv是剛剛上面建立的檔案
with open(fn) as csvFile : #開啟檔案
csvReader = csv.reader(csvFile) #將檔案建立成Reader物件
listReport = list(csvReader) #將資料轉成list(串列)
print(listReport)
我們也可以利用list索引的方式列印出資料
#實作
import csv
fn = 'csvtest.csv' #csvtest.csv是剛剛上面建立的檔案
with open(fn) as csvFile : #開啟檔案
csvReader = csv.reader(csvFile) #將檔案建立成Reader物件
listReport = list(csvReader) #將資料轉成list(串列)
print(listReport[0][1],listReport[0][2])
print(listReport[1][2],listReport[1][3])
print(listReport[2][3],listReport[2][4])
2.迴圈
#實作
import csv
fn = 'csvtest.csv' #csvtest.csv是剛剛上面建立的檔案
with open(fn) as csvFile : #開啟檔案
csvReader = csv.reader(csvFile) #將檔案建立成Reader物件
listReport = list(csvReader) #將資料轉成list(串列)
for row in listReport :
print(row)
print(listReport)
3.DictReader()
這個方法傳回的是 **OrderdDict(排序字典)**類型,所以可以用欄位名稱當索引取得資料。
如果資料中的人名是將「姓」跟「名字」分開在不同的欄位儲存的,就可以用這個方法讀取!
#實作
import csv
fn = 'csvtest.csv' #csvtest.csv是剛剛上面建立的檔案
with open(fn) as csvFile : #開啟檔案
csvDictReader = csv.DictReader(csvFile) #將檔案建立成DictReader物件
for row in csvDictReader : #以DictReader方式列出資料
print(row)
寫入CSV檔案
open()
和關閉檔案 close()
csvFile = open('檔案名稱', 'w', newline = '') #w是 wirter only模式
...
csvFile.close #關閉檔案
或是
with open('檔案名稱', 'w', newline = '') as csvFile :
...
import csv
csvFile = open('檔案名稱', 'w', newline = '') #開啟檔案加上參數newline = '',可以避免輸出時每行間多空一行
writer = csv.writer(csvFile)
#實作
import csv
with open('csvtest.csv', 'w', newline='') as csvfile:
# 建立 CSV 檔寫入
writer = csv.writer(csvfile)
# 寫入一列資料
writer.writerow(['Lisa', 2018, '人資', '面試官', '6'])
#output
Lisa, 2018, 人資, 面試官, 6
writerrow()
#實作
import csv
with open('csvtest.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerrow(['姓名','報到年分','部門','職務','年終'])
writer.writerrow(['Lisa', 2018, '人資', '面試官', '6'])
Dictwriter()
dictWriter = csv.DictWriter(csvFile, fieldnames = field)
dictWiter
之前,必須先設定fields串列,這個串列包含未來字典中的鍵(key)。#實作
import csv
fn = 'csvtest.csv'
with open(fn, 'w', newline ='') as csvFile: #開啟檔案
field = ['姓名','報到年分','部門','職務','年終']
dicWriter = csv.DictWriter(csvFile, fieldnames = field) #建立Writer物件
dictWiter.writeheader() #寫入標題
dictWiter.writerow({'姓名':'Lisa','報到年分':'218','部門':'人資','職務':'面試官','年終':'6'})
csvFile.close #關閉檔案
delimiter
關鍵字writer()
方法內。#實作
import csv
fn = 'csvtest.csv'
with open(fn, 'w', newline ='') as csvFile:
csvWriter = csv.writer(cavFile, delimiter = '\t') #將分隔符號從逗號改成空格
csvWriter.writerow(['姓名','報到年分','部門','職務','年終'])
csvWriter.writerow(['Lisa', 2018, '人資', '面試官', '6'])
csvFile.close
結語
今天是第一次使用CSV這個文件格式(╯✧∇✧)╯,一切都還覺得很新鮮!
明天打算用CSV和Python畫出圖表。
明天!
【Day 7】使用Python處理CSV文件(2/2)
參考資料
.CSV 文件擴展名https://www.reviversoft.com/zh-tw/file-extensions/csv
Python 讀取與寫入 CSV 檔案教學與範例https://blog.gtwang.org/programming/python-csv-file-reading-and-writing-tutorial/
Python 如何讀寫CSV 與合併CSV檔案https://medium.com/seaniap/python-%E5%A6%82%E4%BD%95%E8%AE%80%E5%AF%ABcsv-%E8%88%87%E5%90%88%E4%BD%B5csv%E6%AA%94%E6%A1%88-5e9d5a4e577e