CSV(Comma-Separated Values)即逗号分隔值,可以用Excel打开查看。由于是纯文本,任何编辑器也都可打开。与Excel文件不同,CSV文件中:
值没有类型,所有值都是字符串,不能指定字体颜色等样式,不能指定单元格的宽高,不能合并单元格没有多个工作表,不能嵌入图像图表
在CSV文件中,以,作为分隔符,分隔两个单元格。像这样a,,c表示单元格a和单元格c之间有个空白的单元格。依此类推。
不是每个逗号都表示单元格之间的分界。所以即使CSV是纯文本文件,也坚持使用专门的模块进行处理。Python内置了csv模块。先看看一个简单的例子。
1 import csv 2 data =[ 3 #使用数字和字符串的数字都可以 4 ("ken","mafe",23), 5 ("Tame","maee",29), 6 ("Js","dggd",26)] 7 with open("d://test.csv",'w',newline='')as t_file: 8 csv_writer = csv.writer(t_file) 9 for l in data: 10 csv_writer.writerow(l)
第二步运行py文件之后,我们可以看到d盘已经创建了test.csv文件,如下图所示:
第三步打开test.csv文件,可以看到已经将内容写入到csv文件中了:
上面就简单介绍了csv的写,下面来看一下csv读的方法:
第一步,输入
1 import csv 2 reader =csv.reader(open('d://test.csv'))#打开 3 for list in reader: 4 print(list)
在写入字典序列类型数据的时候,需要传入两个参数,一个是文件对象——f,一个是字段名称——fieldnames,到时候要写入表头的时候,只需要调用writerheader方法,写入一行字典系列数据调用writerrow方法,并传入相应字典参数,写入多行调用writerows
1 import csv 2 header=['name','age'] 3 data =[ 4 {'name':'mafe','age':23}, 5 {'name':'maee','age':29}, 6 {'name':'dggd','age':26}] 7 with open("d:\test.csv",'w',newline='')as t_file: 8 #表头在这里传入,作为第一行数据 9 writer = csv.DictWriter(t_file,header) 10 writer.writeheader() 11 for l in data: 12 writer.writerow(l)
再打开test.csv结果如下:
假设csv文件的内容如上图图所示,用DictReader来读取它
DictReader会将第一行的内容(类标题)作为key值,第二行开始才是数据内容。即图中的csv文件有2列4行数据,第一列的key值为name,第二列的key值为age:
1 import csv 2 with open('d://test.csv',encoding='utf-8')as f: 3 reader =csv.DictReader(f)#字典表 DictReader 列表读取 4 headers =next(reader)#迭代一次 5 print(headers) 6 for row in reader: 7 print(row)
运行结果如下:
最后提醒一下:
read方法的使用:打印出来的结果是数组类型,有文件中几行数据就打印几个数组,不区分表头和值
DictReader方法的使用:打印出来的数据是字典类型,表格的表头为键、每一行的值为值,值有几行就打印几个字典