CSV,全称为 Comma-Separated Values ,中文可以叫作逗号分隔值或字符分隔值,其文件以纯文 本形式存储表格数据。该文件是一个字符序列,可以由任意数目的记录组成,记录间以某种换行符分隔,每条记录由字段组成,字段间的分隔符是其他字符或字符串,最常见的是逗号或制表符, 不过所有记录都有完全相同的字段序列 ,相当于一个结构化表的纯文本形式, 它比 Excel 文件更加简介, XLS 文本是电子表格,它包含了文本、数值、公式和格式等内容,而 CSV 中不包含这些 容,就是特定字符分割的纯文本,结构简单清晰,所以,有时候用CSV来保存数据是比较方便的
目录
1、写入
import csv
with open("data.csv","w") as fd:
writer = csv.writer(fd)
writer.writerow(['id','name','age'])
writer.writerow(['1001','Kike','20'])
writer.writerow(['1002','Bod','29'])
writer.writerow(['1003','Jon','16'])
调用csv库的writer() 方法初始化写入对象,传入句柄,然后调用writerow() 方法传入每行的数据即可完成写入,默认是以,都好分割
修改列于列的分隔符,可以传入delimiter参数
用空白来分割字符键的间距
import csv
with open("data.csv","w") as fd:
writer = csv.writer(fd,delimiter=" ")
writer.writerow(['id','name','age'])
writer.writerow(['1001','Kike',20])
writer.writerow(['1002','Bod',29])
writer.writerow(['1003','Jon',16])
结果
写入多行writerows() 方法同时写入多行
参数就需要要求二维列表
import csv
with open("data.csv","w") as fd:
writer = csv.writer(fd)
writer.writerow(['id','name','age'])
writer.writerows([['1001','Kike',20],['1002','Bod',29],['1003','Jon',16]])
结果:
字典方式写入CSV文件
import csv
with open("data.csv","w") as fd:
fieldnames=['id','name','age']
writer = csv.DictWriter(fd,fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'id':1001,'name':'Kike','age':20})
writer.writerow({'id':1002,'name':'Bod','age':18})
writer.writerow({'id':1003,'name':'Jon','age':16})
DictWriter来初始化一个字典写入对象,接着调用writeheader() 方法先写入头信息,然后在调用writerow() 方法传入相应的字典
结果:
2、读取
import csv
with open("data.csv") as fd:
reader = csv.reader(fd)
for fow in reader:
print(fow)
结果:
['id', 'name', 'age']
['1001', 'Kike', '20']
['1002', 'Bod', '18']
['1003', 'Jon', '16']
['1003', '香茗', '16']
构造reader对象,遍历读取每行的内容
使用pandas读取CSV文件
import pandas as pd
df = pd.read_csv("data.csv")
print(df)
结果:
id name age
0 1001 Kike 20
1 1002 Bod 18
2 1003 Jon 16
3 1003 香茗 16