Python?使用csv庫處理CSV文件的方法
CSV文件
簡單來說CSV文件由任意數(shù)目的記錄組成,記錄間以某種換行符分隔;每條記錄由字段組成,字段間的分隔符是其它字符或字符串,最常見的是逗號或制表符。
CSV庫
Python中集成了專用于處理csv文件的庫,名為:csv。
csv 庫中有4個常用的對象:csv.reader :以列表的形式返回讀取的數(shù)據(jù);csv.writer :以列表的形式寫入數(shù)據(jù);csv.DictReader :以字典的形式返回讀取的數(shù)據(jù);csv.DictWriter:以字典的形式寫入數(shù)據(jù);
數(shù)據(jù)處理
原始數(shù)據(jù)
文件名為"test.csv"

讀取數(shù)據(jù)
使用csv.reader
# 導(dǎo)入 csv 庫
import csv
def reader():
# 打開csv文件 此處的delimiter指定了分隔符,不用此參數(shù)的話,分隔符默認(rèn)為逗號
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))此時得到的line是一個list類型

使用csv.DictReader
# 導(dǎo)入 csv 庫
import csv
def dict_reader():
# 打開文件
with open("test.csv", mode='rt',encoding="utf-8-sig") as f_in:
# 基于打開的文件,創(chuàng)建csv.DictReader實(shí)例
reader = csv.DictReader(f_in)
# 逐行獲取數(shù)據(jù),并處理
for line in reader:
print(type(line))此時的line就是一個dict類型

寫入數(shù)據(jù)
注意:
在打開文件時,需要添加newline = “”。否則,會在每2行有效內(nèi)容之間添加一行空白。
如果要保存的內(nèi)容有中文,而且之后需要用Excel打開文件,那么需要選用utf-8-sig編碼。如果使用utf-8編碼,會導(dǎo)致使用Excel查看文件時中文亂碼。
使用csv.writer寫入數(shù)據(jù)
# 導(dǎo)入 csv 庫
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]
]
# 以寫方式打開文件。注意添加 newline="",否則會在兩行數(shù)據(jù)之間都插入一行空白。
with open("new_data.csv", mode="w", encoding="utf-8-sig", newline="") as f_out:
# 基于打開的文件,創(chuàng)建 csv.writer 實(shí)例
writer = csv.writer(f_out)
# 寫入 header。
# writerow() 一次只能寫入一行。
writer.writerow(header_list)
# 寫入數(shù)據(jù)。
# writerows() 一次寫入多行。
writer.writerows(data_list)輸出結(jié)果為:

使用csv.DictWriter寫入數(shù)據(jù)
# 導(dǎo)入 csv 庫
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},
]
# 以寫方式打開文件。注意添加 newline="",否則會在兩行數(shù)據(jù)之間都插入一行空白。
with open("dict_new_data.csv", mode="w", encoding="utf-8-sig", newline="") as f_out:
# 基于打開的文件,創(chuàng)建 csv.DictWriter 實(shí)例,將 header 列表作為參數(shù)傳入。
writer = csv.DictWriter(f_out, header_list)
# 寫入 header
writer.writeheader()
# 寫入數(shù)據(jù)
writer.writerows(data_list)輸出結(jié)果為:

到此這篇關(guān)于Python 使用csv庫處理CSV文件的文章就介紹到這了,更多相關(guān)Python 處理CSV文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python filter()函數(shù)的使用方法和技巧(數(shù)據(jù)篩選的精密過濾器)
filter()函數(shù)是Python中用于數(shù)據(jù)篩選的核心高階函數(shù),它能夠從可迭代對象中"過濾"出滿足特定條件的元素,相當(dāng)于一個數(shù)據(jù)篩子,下面給大家介紹Python filter()函數(shù)的使用方法和技巧,感興趣的朋友一起看看吧2025-05-05
python HTTPX庫實(shí)現(xiàn)同步異步請求用法示例
這篇文章主要為大家介紹了python HTTPX庫實(shí)現(xiàn)同步異步請求用法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
解決PyCharm不在run輸出運(yùn)行結(jié)果而不是再Console里輸出的問題
這篇文章主要介紹了解決PyCharm不在run輸出運(yùn)行結(jié)果而不是再Console里輸出的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
如何在Windows環(huán)境下安裝PyMySQL(已安裝Anaconda)
這篇文章主要介紹了如何在Windows環(huán)境下安裝PyMySQL問題(已安裝Anaconda),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
Python中的魔術(shù)方法Magic?Methods使用實(shí)例全面指南
在Python中,魔術(shù)方法Magic?Methods是一種特殊的方法,它們以雙下劃線開頭和結(jié)尾,如__init__、__str__等,這些方法允許定制類的行為,使得對象更具有靈活性和可定制性,本文將深入探討Python中一些常用的魔術(shù)方法,以及如何使用它們來定制類與對象2024-01-01
Python基于回溯法子集樹模板解決取物搭配問題實(shí)例
這篇文章主要介紹了Python基于回溯法子集樹模板解決取物搭配問題,簡單描述了搭配問題并結(jié)合實(shí)例形式分析了Python使用回溯法子集樹模板解決取物搭配問題的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
numpy中hstack vstack stack concatenate函數(shù)示例詳解
這篇文章主要為大家介紹了numpy中hstack vstack stack concatenate函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Python數(shù)據(jù)分析之matplotlib繪圖詳解
這篇文章主要為大家詳細(xì)介紹了Python數(shù)據(jù)分析之如何利用matplotlib進(jìn)行繪圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-09-09

