Python?使用csv庫(kù)處理CSV文件的方法
CSV文件
簡(jiǎn)單來(lái)說(shuō)CSV文件由任意數(shù)目的記錄組成,記錄間以某種換行符分隔;每條記錄由字段組成,字段間的分隔符是其它字符或字符串,最常見(jiàn)的是逗號(hào)或制表符。
CSV庫(kù)
Python中集成了專用于處理csv文件的庫(kù),名為:csv
。
csv 庫(kù)中有4個(gè)常用的對(duì)象:csv.reader
:以列表的形式返回讀取的數(shù)據(jù);csv.writer
:以列表的形式寫(xiě)入數(shù)據(jù);csv.DictReader
:以字典的形式返回讀取的數(shù)據(jù);csv.DictWriter
:以字典的形式寫(xiě)入數(shù)據(jù);
數(shù)據(jù)處理
原始數(shù)據(jù)
文件名為"test.csv"
讀取數(shù)據(jù)
使用csv.reader
# 導(dǎo)入 csv 庫(kù) import csv def reader(): # 打開(kāi)csv文件 此處的delimiter指定了分隔符,不用此參數(shù)的話,分隔符默認(rèn)為逗號(hào) with open("test.csv", mode='rt',encoding="utf-8-sig") as f_in: reader = csv.reader(f_in,delimiter=',') # 獲取第一行的header # header[0] = "name" # header[1] = "sex" # header[2] = "age" # header[3] = "score" header = next(reader) # 逐行獲取數(shù)據(jù),并處理 for line in reader: print(type(line))
此時(shí)得到的line是一個(gè)list類型
使用csv.DictReader
# 導(dǎo)入 csv 庫(kù) import csv def dict_reader(): # 打開(kāi)文件 with open("test.csv", mode='rt',encoding="utf-8-sig") as f_in: # 基于打開(kāi)的文件,創(chuàng)建csv.DictReader實(shí)例 reader = csv.DictReader(f_in) # 逐行獲取數(shù)據(jù),并處理 for line in reader: print(type(line))
此時(shí)的line就是一個(gè)dict類型
寫(xiě)入數(shù)據(jù)
注意:
在打開(kāi)文件時(shí),需要添加newline = “”。否則,會(huì)在每2行有效內(nèi)容之間添加一行空白。
如果要保存的內(nèi)容有中文,而且之后需要用Excel打開(kāi)文件,那么需要選用utf-8-sig編碼。如果使用utf-8編碼,會(huì)導(dǎo)致使用Excel查看文件時(shí)中文亂碼。
使用csv.writer
寫(xiě)入數(shù)據(jù)
# 導(dǎo)入 csv 庫(kù) import csv def writer(): # 創(chuàng)建列表,保存header內(nèi)容 header_list = ["name", "sex", "age", "score"] # 創(chuàng)建列表,保存數(shù)據(jù) data_list = [ ["aaa", "fm", 20, 80], ["bbb", "fm", 19, 90], ["ccc", "fm", 21, 95] ] # 以寫(xiě)方式打開(kāi)文件。注意添加 newline="",否則會(huì)在兩行數(shù)據(jù)之間都插入一行空白。 with open("new_data.csv", mode="w", encoding="utf-8-sig", newline="") as f_out: # 基于打開(kāi)的文件,創(chuàng)建 csv.writer 實(shí)例 writer = csv.writer(f_out) # 寫(xiě)入 header。 # writerow() 一次只能寫(xiě)入一行。 writer.writerow(header_list) # 寫(xiě)入數(shù)據(jù)。 # writerows() 一次寫(xiě)入多行。 writer.writerows(data_list)
輸出結(jié)果為:
使用csv.DictWriter
寫(xiě)入數(shù)據(jù)
# 導(dǎo)入 csv 庫(kù) import csv def dict_writer(): # 創(chuàng)建列表,保存header內(nèi)容 header_list = ["name", "sex", "age", "score"] # 創(chuàng)建列表,保存數(shù)據(jù) data_list = [ {"name":"a", "sex":"m", "age":20, "score":80}, {"name":"bb", "sex":"fm", "age":19, "score":90}, {"name":"ccc", "sex":"fm", "age":21, "score":95}, ] # 以寫(xiě)方式打開(kāi)文件。注意添加 newline="",否則會(huì)在兩行數(shù)據(jù)之間都插入一行空白。 with open("dict_new_data.csv", mode="w", encoding="utf-8-sig", newline="") as f_out: # 基于打開(kāi)的文件,創(chuàng)建 csv.DictWriter 實(shí)例,將 header 列表作為參數(shù)傳入。 writer = csv.DictWriter(f_out, header_list) # 寫(xiě)入 header writer.writeheader() # 寫(xiě)入數(shù)據(jù) writer.writerows(data_list)
輸出結(jié)果為:
到此這篇關(guān)于Python 使用csv庫(kù)處理CSV文件的文章就介紹到這了,更多相關(guān)Python 處理CSV文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Opencv實(shí)現(xiàn)眼睛控制鼠標(biāo)的實(shí)踐
本文主要介紹了Opencv實(shí)現(xiàn)眼睛控制鼠標(biāo)的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Python連接數(shù)據(jù)庫(kù)使用matplotlib畫(huà)柱形圖
這篇文章主要介紹了Python連接數(shù)據(jù)庫(kù)使用matplotlib畫(huà)柱形圖,文章通過(guò)實(shí)例展開(kāi)對(duì)主題的相關(guān)介紹。具有一定的知識(shí)參考價(jià)值性,感興趣的小伙伴可以參考一下2022-06-06python讀取指定字節(jié)長(zhǎng)度的文本方法
今天小編就為大家分享一篇python讀取指定字節(jié)長(zhǎng)度的文本方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08python爬蟲(chóng)實(shí)現(xiàn)POST request payload形式的請(qǐng)求
這篇文章主要介紹了python爬蟲(chóng)實(shí)現(xiàn)POST request payload形式的請(qǐng)求,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04Python實(shí)現(xiàn)控制手機(jī)電腦拍照并自動(dòng)發(fā)送郵箱
這篇文章主要介紹了如何實(shí)現(xiàn)利用Python控制手機(jī)電腦拍照并自動(dòng)發(fā)送郵箱,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手試一試2022-02-02python實(shí)現(xiàn)linux下抓包并存庫(kù)功能
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)linux下抓包并存庫(kù)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07