CSV 文件(Comma Separated Values file,即逗號分隔值文件)是一種純文本文件,它使用特定的結構來排列表格數據。因為是純文本文件,所以 csv 只包含實際的文本數據 —— 換句話說,csv 可以包含可打印的 ASCII 或 Unicode 字符。那在python中對CSV文件要怎么進行操作呢?
首先要先准備一個CSV文件,創建一個excel文件,並另存為csv文件,放入幾行數據,我准備里面的內容是:
一、導入CSV包
import csv
二、CSV文件基本讀取
def read_csv(): with open('file.csv','r') as f: rete = csv.reader(f) # 讀取后返回的是一個_csv.reader的對象,如果通過遍歷,可以看到是一個個列表 for x in rete: print(x)
運行結果:
['編號', '課程', '講師'] ['1', 'Python', 'Tom'] ['2', 'C#', 'Jesee'] ['3', 'Django', 'Nike'] ['4', '.Net', 'Kangkang']
通過以上方法,就讀取出CSV文件里面的內容。
三、讀取CSV文件並用namedtuple映射列名
def read_namedtuple(): with open('file.csv','r') as f: red = csv.reader(f) # 讀取后返回的是一個_csv.reader的對象,如果通過遍歷,可以看到是一個列表 head = next(red) # 要把第一行給分隔開,不然會當成數據一起打印了 ow = namedtuple('Row',head) # 用nmaedtuple來定義的,它的對象名稱就叫Row,后面列表給它的數據就是最終這個對象的值,而head里面的表頭就當作是Row對象值的名稱 for x in red: row = ow(*x) # *r就是對遍歷到的r進行解包,然后傳遞給Row,它會將每一列對應到Row對象值的名稱下面 print(row)
運行結果:
Row(編號='1', 課程='Python', 講師='Tom') Row(編號='2', 課程='C#', 講師='Jesee') Row(編號='3', 課程='Django', 講師='Nike') Row(編號='4', 課程='.Net', 講師='Kangkang')
四、讀取CSV文件並以字典的形式映射
def read_dict(): '''讀取csv並以字典的形式映射''' with open('score.csv','r') as f: red = csv.DictReader(f) # 通過csv自帶的DictReader方法將數據轉換成字典表 for x in red: print(x) # 遍歷出來每個x都是一個字典表
運行結果:
{'編號': '1', '課程': 'Python', '講師': 'Tom'} {'編號': '2', '課程': 'C#', '講師': 'Jesee'} {'編號': '3', '課程': 'Django', '講師': 'Nike'} {'編號': '4', '課程': '.Net', '講師': 'Kangkang'}
五、寫入CSV文件
寫入單行內容到CSV文件
def write_csv(s,q): with open('file.csv','a',newline='') as f: # newline=空是因為我們文件是csv類型,如果不加這個東西,當我們寫入東西的時候,就會出現空行 xieru = csv.writer(f,dialect='excel') # 定義一個變量進行寫入,將剛才的文件變量傳進來,dialect就是定義一下文件的類型,我們定義為excel類型 xieru.writerow(s) # 寫入的方法是writerow,通過寫入模式對象,調用方法進行寫入 xieru.writerow(q) print('寫入完成') s = [5, 'Java', 'Mark'] q = [6, 'C++', 'William'] write_csv(s,q)
運行結果:
寫入完成
寫入多行內容到CSV文件
def write_csv(s): with open('file.csv','a',newline='') as f: xieru = csv.writer(f,dialect='excel') xieru.writerows(s) # writerows方法是一下子寫入多行內容 print('寫入完成') e = [(7,'PHP','Jones'),(8,'HTTP','Brown')] write_csv(e)
運行結果:
寫入完成
六、以字典表的形式寫入CSV文件
def write_dict(q): biao = ['編號','課程','講師'] with open('file.csv', 'a', newline='') as f: xieru = csv.DictWriter(f,biao) xieru.writerows(q) # writerows方法是一下子寫入多行內容 print('寫入完成') u = [ {'編號': 9, '課程': 'SQL', '講師': 'Miller'}, {'編號': 10, '課程': 'MySQL', '講師': 'Davis'} ] write_dict(u)
運行結果:
寫入完成
這就Python對CSV文件的讀取與寫入,你看懂了嗎?如果沒看懂,歡迎留言交流哦!
本文轉自:https://www.myblou.com/archives/1466