csv 文件是一種逗號分隔的純文本形式存儲的表格數據,Python內置了CSV模塊,可直接通過該模塊實現csv文件的讀寫操作,在web應用中導出數據是比較常見操作。
這篇文章介紹csv模塊的基本用法
寫操作writer.writerow, 將多列數據寫入一行
import csv
with open('some.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(["123", "234", "345"])
writer.writerow(["abc", "efg", "hij"])
如果以文本文件的方式打開,每行數據之間都是用逗號隔開的文本字符串
寫入時,必須指定 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']
csv.DictWriter 對象引入了一個fieldnames參數, fieldnames是csv文件中的表頭,就是第一行中的數據
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')])
默認情況下導出的字符串全是數字時,在excel中打開時會被自動轉換成科學計數格式
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'})