CSV格式文件的读取与保存
1. 什么是CSV
"CSV"并不是一种单一的、定义明确的格式(尽管RFC 4180有一个被通常使用的定义)。因此在实践中,术语“CSV”泛指具有以下特征的任何文件:
1.纯文本,使用某个字符,比如ASCII,Unicode,EBCIC或GB2312(简体中文环境)等;
2.由记录组成(典型的是每行一条记录);
3.每条记录被分隔符分隔为字段(典型分隔符有逗号、分号或制表符;有时分隔符可以包括可选的空格);
4.每条记录都有同样的字段序列。
2. CSV文件的读取
1、按列表读取
2、按字典形式读取
#encoding: utf-8 import csv def read_csv_demo1(): with open('stock.csv', 'r') as fp: # reader是一个迭代器 reader = csv.reader(fp) next(reader) for x in reader: name = x[3] volumn = x[-1] print({'name': name, 'volumn': volumn}) def read_csv_demo2(): with open('stock.csv','r') as fp: # 使用DictReader创建的reader对象 # 不会包含标题那行的数据 # reader是一个迭代器,遍历这个迭代器,返回来的是一个字典。 reader = csv.DictReader(fp) for x in reader: value = {"name":x['secShortName'],'volumn':x['turnoverVol']} print(value) if __name__ == '__main__': read_csv_demo2()
3. CSV文件的保存
1、以列表进行保存,直接存入
2、以字典形式保存,需要先插入头再保存值
#encoding: utf-8 import csv def write_csv_demo1(): headers = ['username', 'age', 'height'] values = [ ('張三', 18, 180), ('李四', 19, 190), ('王五', 20, 160) ] with open('classroom.csv', 'w', encoding='utf-8', newline='') as fp: writer = csv.writer(fp) writer.writerow(headers) writer.writerows(values) def write_csv_demo2(): headers = ['username', 'age', 'height'] values = [ {'username':'张三','age':18,'height':180}, {'username':'李四','age':19,'height':190}, {'username':'王五','age':20,'height':160} ] with open('classroo1.csv','w',encoding='utf-8',newline='') as fp: writer = csv.DictWriter(fp,headers) # 写入表头数据的时候,需要调用writeheader方法 writer.writeheader() writer.writerows(values) if __name__ == '__main__': write_csv_demo2()