Python3操作讀寫CSV文件使用包過程解析
CSV(Comma-Separated Values)即逗號(hào)分隔值,一種以逗號(hào)分隔按行存儲(chǔ)的文本文件,所有的值都表現(xiàn)為字符串類型(注意:數(shù)字為字符串類型)。
如果CSV中有中文,應(yīng)以u(píng)tf-8編碼讀寫,如果要支持Excel查看,應(yīng)是要用utf-8 with bom格式及utf-8-sig
Python3操作CSV文件使用自帶的csv包
reader=csv.reader(f, delimiter=','):用來讀取數(shù)據(jù),reader為生成器,每次讀取一行,每行數(shù)據(jù)為列表格式,可以通過delimiter參數(shù)指定分隔符
writer=csv.writer(f):用來寫入數(shù)據(jù),按行寫入,writer支持writerow(列表)單行寫入,和writerows(嵌套列表)批量寫入多行,無須手動(dòng)保存。
當(dāng)文件中有標(biāo)題行時(shí),可以使用header=next(reader)先獲取到第一行的數(shù)據(jù),再進(jìn)行遍歷所有的數(shù)據(jù)行。
寫入時(shí),可以先使用writer.writerow(標(biāo)題行列表),寫入標(biāo)題行,再使用writer.writerows(多行數(shù)據(jù)嵌套列表),寫入多行數(shù)據(jù)(也可以逐行寫入)。
數(shù)據(jù)文件data.csv:
name,password
abc,123456
張五,123#456
張#abc123,123456
666,123456
a b,123456
讀取示例:
import csv with open('data.csv', encoding='utf-8') as f: reader = csv.reader(f) header = next(reader) print(header) for row in reader: print(row)
注意:reader必須在文件打開的上下文中使用,否則文件被關(guān)閉后reader無法使用
所有的數(shù)字被作為字符串,如果要使用數(shù)字格式,應(yīng)使用int()/float()做相應(yīng)轉(zhuǎn)換
寫入示例:
import csv header = ['name', 'password', 'status'] data = [ ['abc', '123456', 'PASS'], ['張五', '123#456', 'PASS'], ['張#abc123', '123456', 'PASS'], ['666', '123456', 'PASS'], ['a b', '123456', 'PASS'] ] with open('result.csv', 'w', encoding='utf-8', newline='') as f: writer = csv.writer(f) writer.writerow(header) writer.writerows(data)
注意,打開文件時(shí)應(yīng)指定格式為w, 文本寫入,不支持wb,二進(jìn)制寫入,當(dāng)然,也可以使用a/w+/r+
打開文件時(shí),指定不自動(dòng)添加新行newline='',否則每寫入一行就或多一個(gè)空行。
如果想寫入的文件Excel打開沒有亂碼,utf-8可以改為utf-8-sig。
結(jié)果展示,result.csv內(nèi)容::
name,password,status
abc,123456,PASS
張五,123#456,PASS
張#abc123,123456,PASS
666,123456,PASS
a b,123456,PASS
使用字典格式的數(shù)據(jù):DictReader, DictWriter#
注意數(shù)據(jù)必須有標(biāo)題行時(shí)才能使用
reader=csv.DictReader(f):直接將標(biāo)題和每一列數(shù)據(jù)組裝成有序字典(OrderedDict)格式,無須再單獨(dú)讀取標(biāo)題行
writer=csv.DictWriter(f, 標(biāo)題行列表):寫入時(shí)可使用writer.writeheader()寫入標(biāo)題,然后使用writer.writerow(字典格式數(shù)據(jù)行)或write.writerows(多行數(shù)據(jù))
讀取示例:
import csv with open('data.csv', encoding='utf-8') as f: reader = csv.DictReader(f) for row in reader: print(row['name'], row['password'])
寫入示例:
import csv header = ['name', 'password', 'status'] data = [ {'name':'abc', 'password':'123456', 'status':'PASS'}, {'name':'張五', 'password':'123#456', 'status':'PASS'}, {'name':'張#abc123', 'password':'123456', 'status':'PASS'}, {'name':'666', 'password':'123456', 'status':'PASS'}, {'name':'a b', 'password':'123456', 'status':'PASS'} ] with open('result2.csv', 'w', encoding='utf-8', newline='') as f: writer = csv.DictWriter(f, header) writer.writeheader() writer.writerows(data)
寫入結(jié)果,同result.csv
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Django框架HttpResponse和HttpRequest對(duì)象學(xué)習(xí)
這篇文章主要介紹了Django框架HttpResponse和HttpRequest對(duì)象學(xué)習(xí),有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家早日升職加薪2021-09-09python入門學(xué)習(xí)關(guān)于for else的特殊特性講解
本文將介紹 Python 中的" for-else"特性,并通過簡(jiǎn)單的示例說明如何正確使用它,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11Python 處理表格進(jìn)行成績(jī)排序的操作代碼
這篇文章主要介紹了Python 處理表格進(jìn)行成績(jī)排序,也就是說將學(xué)生從按照學(xué)號(hào)排序變?yōu)榘凑粘煽?jī)從高到低進(jìn)行排序,具體實(shí)現(xiàn)代碼跟隨小編一起看看吧2021-07-07python中24小時(shí)制轉(zhuǎn)換為12小時(shí)制的方法
最近需要實(shí)現(xiàn)一個(gè)需求,求用戶輸入24小時(shí)制的時(shí)間,然后顯示12小時(shí)制的時(shí)間。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06詳解Python中數(shù)據(jù)庫管理模塊shelve和dbm的應(yīng)用
作為常用的 python 自帶數(shù)據(jù)庫管理模塊,shelve 和 dbm 都是非常方便的對(duì)象持久化存儲(chǔ)和檢索工具,本文將從用法、優(yōu)勢(shì)以及不同點(diǎn)等方面進(jìn)行介紹,希望對(duì)大家有所幫助2023-10-10matlab、python中矩陣的互相導(dǎo)入導(dǎo)出方式
這篇文章主要介紹了matlab、python中矩陣的互相導(dǎo)入導(dǎo)出方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06安裝Python的web.py框架并從hello world開始編程
這篇文章主要介紹了安裝Python的web.py框架并從hello world開始編程,web.py的作者年輕的Aaron Swartz已經(jīng)離世,緬懷大神,需要的朋友可以參考下2015-04-04