CSV:Comma-Sparated Values,逗号分隔值(字符分隔值)以纯文本形式存储数据表格,可由任意数目的记录组成,各条记录以某种换行符分隔开一. CSV
二. 使用规则
1. 写入
1.1 writer
初始化写入对象,以逗号分隔字段1.2 writerow( )
传入每行数据
import csvwith open('data.csv','w') as csvfile:writer=csv.writer(csvfile)writer.writerow(['id','name','age'])writer.writerow(['1','a','20'])writer.writerow(['2','b','21'])writer.writerow(['3','c','22'])#运行结果id,name,age1,a,202,b,213,c,22
同时生成csv文件,可用Excel打开
1.3 writerows( )
同时传入多行数据,此时参数需要传二维列表。输出结果同上import csvwith open('data.csv','w') as csvfile:writer=csv.writer(csvfile)writer.writerow(['id','name','age'])writer.writerows([['1','a','20'],['2','b','21'],['3','c','22']])
1.4 delimiter
修改列与列之间的分隔符delimiter=' ':列与列以空格分隔import csvwith open('data.csv','w') as csvfile:writer=csv.writer(csvfile,delimiter=' ')writer.writerow(['id','name','age'])writer.writerow(['1','a','20'])writer.writerow(['2','b','21'])writer.writerow(['3','c','22'])
1.5 字典写入
fieldnames
DicWriterwriteheader
先定义3个字段,用fieldnames表示,然后将其传给DicWriter方法初始化一个字典写入对象,并将对象赋给writer变量。接着调用写入对象的writerheader方法先写入头信息,再调用writerow方法传入相应字典。输出结果同上。
import csvwith open('data.csv','w') as csvfile:fieldnames = ['id', 'name', 'age']writer=csv.DictWriter(csvfile,fieldnames=fieldnames)writer.writeheader()writer.writerow({'id':'1','name':'a','age':'20'})writer.writerow({'id':'2','name':'b','age':'21'})writer.writerow({'id':'3','name':'c','age':'22'})
1.6 追加写入
a:追加写入模式import csvwith open('data.csv','a') as csvfile:fieldnames = ['id', 'name', 'age']writer=csv.DictWriter(csvfile,fieldnames=fieldnames)writer.writerow({'id':'4','name':'d','age':'22'})#运行结果id,name,age1,a,202,b,213,c,224,d,22
1.7 写入中文内容
制定编码模式with open('data.csv','a',encoding='utf-8') as csvfile:
pandas库
安装
pip3 install pandas
使用:先定义几条数据,每条数据都是一个字典,然后将其组合成一个列表,赋值为data。接着使用pandas的DataFrame类新建了一个DataFrame对象,参数传入data,并把该对象赋值为df。最后调用df的to_csv方法将数据保存为csv文件
import pandas as pddata=[{'id':'1','name':'陈','age':'20'},{'id':'2','name':'李','age':'20'},{'id':'3','name':'张','age':'20'}]df=pd.DataFrame(data)df.to_csv('data.csv',index=False)
2. 读取
2.1 reader( )
通过遍历输出了文件中每行的内容,每一行都是一个列表如果CSV文件中包含中文,需要指定文件编码import csvwith open('data.csv','r',encoding='utf-8') as csvfile:reader=csv.reader(csvfile)for row in reader:print(row)#运行结果['id', 'name', 'age']['1', '陈', '20']['2', '李', '20']['3', '张', '20']
2.2 pandas读取
read_csv( ):读取CSV文件import pandas as pddf=pd.read_csv('data.csv')print(df)
tolist( ):只读数据
import pandas as pddf=pd.read_csv('data.csv')data=df.values.tolist()print(data)#运行结果[[1, '陈', 20], [2, '李', 20], [3, '张', 20]]