(7-09)CSV操作一维、二维数据

1.什么是CSV文件

  • (Comma-Separated Values)是一种国际通用的一维、二维数据存储格式,其对应文件的扩展名为.csv,可使用Excel软件直接打开。
  • CSV文件中每行对应一个一维数据,一维数据的各数据元素之间用英文半角逗号分隔(逗号两边不需要加额外的空格);
    对于缺失元素,也要保留逗号,使得元素的位置能够与实际数据对应。
  • CSV文件中的多行形成了一个二维数据,即一个二维数据由多个一维数据组成;
    二维数据中的第一行可以是列标题,也可以直接存储数据(即没有列标题)。

2.CSV文件存储eg

  • 对于一维数据,使用CSV文件存储的结果为
90,70,95,98,65
  • 对于二维数据,使用CSV文件存储的结果为,即5个一维数据
90,98,87
70,89,92
95,78,81
98,90,95
65,72,70

3.CSV文件的写操作

  • csv模块的writer方法可以生成一个writer对象,使用该对象可以将数据,以逗号分隔的形式写入到CSV文件中。
    csv.writer方法的语法格式为:
csv.writer(csvfile)

其中,csvfile是一个具有write方法的对象。
如果将open函数返回的文件对象作为实参传给csvfile,则调用open函数打开文件时必须加上一个关键字参数“newline=''
  • 生成writer对象后,就可以使用csv模块的writerow和writerows方法向CSV文件中写入数据。
    csv.writerow和csv.writerows方法的语法格式分别为
writer.writerow(row)
writer.writerows(rows)

其中,writer是csv.writer方法返回的writer对象;
row是要写入到CSV文件中的一行数据(如一维列表);rows是要写入到CSV文件中的多行数据(如二维列表)。

4.CSV文件的读操作

  • csv模块的reader方法可以生成一个reader对象,使用该对象可以将以逗号分隔的数据从CSV文件读取出来。
    csv.reader方法的语法格式为:
csv.reader(csvfile)

其中,csvfile要求传入一个迭代器。
open函数返回的文件对象除了是可迭代对象,同时也是迭代器。
如果将文件对象作为实参传给csvfile,则调用open函数打开文件时应加上一个关键字参数“newline=''”。
返回的reader对象是一个可迭代对象,因此可以使用for循环直接遍历CSV文件中的每一行数据,每次遍历会返回一个由字符串组成的列表。

5.CSV文件学写eg

import csv #导入csv模块
data2D=[#第1名学生的3门课程成绩,二维列表数据
[70,89,92],#第2名学生的3门课程成绩
[95,78,81],#第3名学生的3门课程成绩
[98,90,95],#第4名学生的3门课程成绩
[65,72,70]#第5名学生的3门课程成绩
]

w:文件若不存在,则创建;文件若存在,则文件内容会被清空
因为要把打开的文件的对象传递给writer,所以这里要加该关键字参数newline
with open('D:\\Python\\score.csv, 'w', newline='') as f:#打开文件,返回的文件对象赋值给f
	csvwriter=csv.writer(f)#得到writer对象
	csvwriter=writerow(['语文', '数学', '英语']) #先将列标题写入CSV文件
	csvwriter=writerows(data2D) #将二维列表中的数据写入CSV文件

5.CSV文件读eg

ls2=[]
newline='':代表空字符串
with open('D:\\Python\\score.scv' , 'r' , newline='') as f:#打开文件
	scvreader=scv.reader(f)#得到reader对象
	for line in csvreader:#将CSV文件中的一行数据作为列表读取到line中
		ls2.append(line)#将当前行数据的列表添加到ls2的尾部
print(ls2)#输出ls2

结果如下:'语文''90'都是字符串类型
[['语文', '数学', '英语'], ['90', '98', '87'], ['70', '89', '92],
['95', '78', '81'], ['98', '90', '95'], ['65', '72', '70']]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢打篮球的普通人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值