CSV文件储存
CSV,全称为 Comma-Separated Vaules,翻译为逗号分隔值或字符分隔值,其文件以纯文本形式存储表格数据。该文件是一个字符序列,可以由任意数目的记录组成,记录间以某种换行符分隔。每条记录由字段组成,字段之间的分隔符是字符串或其他字符,最常见的是逗号或制表符。不过所有记录都有完全相同的字段序列,相当于一个结构化表的纯文本形式。它比Excel文件更加简洁,XLS文本是电子表格,它包含了文本、数值、公式和格式等内容,而CSV中不包含这些内容,就是特定字符分隔的纯文本,结构简单清晰。下面用一个简单的实例来介绍CSV:
import csv with open('data.csv','w') as csvfile: writer = csv.writer(csvfile) writer.writerow(['id','name','age']) writer.writerow(['1001','jonas',18]) writer.writerow(['1002','jerry',17]) writer.writerow(['1003','tom',16])
首先,打开data.csv文件,然后指定打开的模式为w,获得文件句柄,随后调用csv库的writer()方法初始化写入对象,传入该句柄,然后调用writerow()方法传入每行的数据即可完成写入。然后通过文本形式直接打开data.csv会发现,刚才写入的数据都是通过逗号分隔开的,当然,在写入的时候也可以修改这个分隔符:
import csv with open('data.csv','w') as csvfile: writer = csv.writer(csvfile,delimiter=' ') writer.writerow(['id','name','age']) writer.writerow(['1001','jonas',18]) writer.writerow(['1002','jerry',17]) writer.writerow(['1003','tom',16])
上面这里指定空格为分隔符。另外,还可以通过调用writerows()方法同时写入多行,此时参数就需要为二维列表:
import csv with open('data.csv','w') as csvfile: writer = csv.writer(csvfile) writer.writerow(['id','name','age']) writer.writerows([['1001','jonas',18],['1002','jerry',17],['1003','tom',16]])
除此以外,csv库还提供了字典的写入方式:
import csv with open('data.csv','w') as csvfile: fieldnames = ['id','name','age'] writer = csv.DictWriter(csvfile,fieldnames=fieldnames) writer.writeheader() writer.writerow({'id':1001,'name':'jonas','age':18}) writer.writerow({'id':1002,'name':'jerry','age':20})
先定义3个字段,用fieldnames表示,然后将其传给DictWriter来初始化一个字典写入对象,接着可以调用writeheader()方法先写入头信息,然后再调用writerow()方法传入相应字典。
除了上面介绍的写入信息,还可以通过csv库来读取.csv的文件:
import csv with open('data.csv','r',encoding='utf-8') as csvfile: reader = csv.reader(csvfile) for row in reader: print(row)
通过遍历输出的每行结果都是一个列表。