python 處理 csv 文件
csv 文件是一種逗號分隔的純文本形式存儲的表格數(shù)據(jù),Python內(nèi)置了CSV模塊,可直接通過該模塊實現(xiàn)csv文件的讀寫操作,在web應用中導出數(shù)據(jù)是比較常見操作。
這篇文章介紹csv模塊的基本用法
寫操作
writer.writerow, 將多列數(shù)據(jù)寫入一行
import?csv
with?open('some.csv',?'w',?newline='')?as?f:?
????writer?=?csv.writer(f)
????writer.writerow(["123",?"234",?"345"])
????writer.writerow(["abc",?"efg",?"hij"])
如果以文本文件的方式打開,每行數(shù)據(jù)之間都是用逗號隔開的文本字符串

寫入時,必須指定 newline=’’, 否則每插入一行就有一個空行
讀操作
with?open('some.csv',?'r',?newline="")?as?f:?
????reader?=?csv.reader(f)
????for?row?in?reader:
????????print(row)
輸出
['123',?'234',?'345']
['abc',?'efg',?'hij']DictWriter & DictReader
csv.DictWriter 對象引入了一個fieldnames參數(shù), fieldnames是csv文件中的表頭,就是第一行中的數(shù)據(jù)
with?open("person.csv",?'w',?newline='')?as?f:
????fieldnames?=?["name",?"age",?"sex"]
????writer?=?csv.DictWriter(f,?fieldnames=fieldnames)
????writer.writeheader()
????writer.writerow({"name":?"zhangsan",?"age":?10,?"sex":?"male"})
????writer.writerow({"name":?"lis",?"age":?20,?"sex":?"male"})

with?open('person.csv',?'r')?as?f:
????reader?=?csv.DictReader(f)
????for?row?in?reader:
????????print(row)每行輸出的是一個字典對象
OrderedDict([('name',?'zhangsan'),?('age',?'10'),?('sex',?'male')])
OrderedDict([('name',?'lis'),?('age',?'20'),?('sex',?'male')])默認情況下導出的字符串全是數(shù)字時,在excel中打開時會被自動轉換成科學計數(shù)格式
import?csv
field_order?=?["會診單號"]
with?open("導出.csv",?'w',?encoding="utf8",?newline="")?as?csvfile:
????writer?=?csv.DictWriter(csvfile,?field_order)
????writer.writeheader()
????writer.writerow({"會診單號":?"20210217162737860175"})
只需要在字符串后面加轉義字符’\t’即可變成字符串
import?csv
field_order?=?["會診單號"]
with?open("導出.csv",?'w',?encoding="utf8",?newline="")?as?csvfile:
????writer?=?csv.DictWriter(csvfile,?field_order)
????writer.writeheader()
????writer.writerow({"會診單號":?"20210217162737860175"+'\t'})
評論
圖片
表情
