前言:
如今同学们对“怎么保存csv格式”可能比较着重,看官们都想要学习一些“怎么保存csv格式”的相关文章。那么小编同时在网摘上搜集了一些关于“怎么保存csv格式””的相关文章,希望姐妹们能喜欢,同学们一起来学习一下吧!前面一讲中,我们已经讲了如何对文件进行读写的操作,我们这节课专门针对一种保存数据时非常常用的文件格式进行讲解。这种文件扩展名为.csv,也叫做逗号分隔符文件。这种文件可以使用记事本、excel等多种软件打开,用于存储数据。
一、csv文件的格式
在csv文件中,同一行的数据直接使用“,”分隔。一行可以显示多个数据。如果文件有多行,就可以构成一个二维的数据。我们看下面的表格:
姓名
语文
数学
英语
马钰
98
97.5
96
丘处机
96.5
92
94
王处一
92
89
91.5
孙不二
87.5
86
92.5
这个文件存储在csv格式中以如下形式显示:
姓名,语文,数学,英语
马钰,98,97.5,96
丘处机,96.5,92,94
王处一,92,89,91.5
孙不二,87.5,86,92.5
当然,csv格式的文件如果使用excel打开,也会以表格的形式显示。
二、一维数据在csv文件中的读写2.1 数据的保存
一维数据在Python中以列表的形式存在,而csv格式的文件中,我们使用的是逗号分隔的字符串,在保存到文件中时,我们需要将数据进行转换。我们看下面的例子:
c = ['北京','上海','广州','深圳']f = open('city.csv', 'w')f.write(','.join(c) + '\n')f.close()
使用join()方法,将列表中的元素使用逗号连接成字符串,记住末尾一定要添加换行符哦!当然,我们也可以使用with语句书写:
c = ['北京','上海','广州','深圳']with open('city.csv','w') as f: f.write(','.join(c) + '\n')2.2 数据的读取
数据读取的时候,我们进行了反向的操作,读取到的是所有数据以逗号为分隔符的字符串,我们需要将它转换成列表保存。我们看一下例子:
f = open('city.csv', 'r')c = f.read().strip().split(',')f.close()print(c)
由于从文件读取出来的字符串有换行符,我们先要使用strip()方法将换行符删了,再使用split()方法将数据以逗号为分隔符拆分成列表。同样我们可以可以用with语句书写:
with open('city.csv','r') as f: c = f.read().strip().split(',')print(c)三、二维数据在csv文件中的读写
二维数据由多个一维数据构成,是一维数据的组合形式,可以用二维列表表示。列表的每个元素对应二维数据的一行,这个元素本身也是列表。二维数据一般采用相同的数据类型存储数据。
二维数据的表示:
c = [ ['乔峰', '95', '98', '78', '65'], ['虚竹', '85', '89', '68', '93'], ['段誉', '99', '89', '86', '90'] ]
将二维数据保存到csv格式存储,csv文件的每一行是一个一维数据,整个csv文件是一个二维数据。
csv文件中二维数据存储的样式:
乔峰,95,98,78,65
虚竹,85,89,68,93
段誉,99,89,86,90
3.1 二维数据的保存
二维数据写入时,我们可以使用循环遍历列表并一行一行写入,每一行写入一个一维数据。具体操作方式如下:
c = [ ['乔峰', '95', '98', '78', '65'], ['虚竹', '85', '89', '68', '93'], ['段誉', '99', '89', '86', '90'] ]f = open('score.csv', 'w')for i in c: f.write(','.join(i) + '\n')f.close()
同样也可以使用with语句书写:
c = [ ['乔峰', '95', '98', '78', '65'], ['虚竹', '85', '89', '68', '93'], ['段誉', '99', '89', '86', '90'] ]with open('score.csv', 'w') as f: for i in c: f.write(','.join(i) + '\n')3.2 二维数据的读取
二维数据的读取操作与写入操作正好相反,我们要读取文件中每行的内容,每行是一个一维数据。具体操作如下:
c = []f = open('score.csv', 'r')for i in f.readlines(): c.append(i.strip().split(','))f.close()print(c)
同样也可以使用with语句书写:
c = []with open('score.csv', 'r') as f: for i in f.readlines(): c.append(i.strip().split(','))print(c)四、csv库的使用
刚刚我们使用内置的函数和方法进行了csv文件的保存和读取操作。在Python中还提供了一个csv的标准库,我们可以直接导入csv库进行csv文件的操作。csv库里面主要提供了writer()和reader()两个对象。使用csv库可以大大降低读写csv文件程序的复杂度。我们目前需要掌握以下两个函数:
csv.writer() 创建初始化一个csv写入对象
csv.reader() 创建一个csv文件的阅读器对象
我们来看看使用csv库如何处理csv文件的保存和读取。
4.1 使用csv库存储csv文件
单行写入:一位数据的写入,使用writer.writerow()方法即可:
import csvc = ['苹果', '西瓜', '橘子', '柠檬']with open('fruit.csv', 'w', newline='') as f: writer = csv.writer(f) writer.writerow(c)
注意:使用csv库写入数据时,open()函数里面需要加一个参数newline=''。否则会多处空行。
多行写入:二维数据的写入,使用writer.writerows()方法即可:
import csvc = [ ['乔峰', '95', '98', '78', '65'], ['虚竹', '85', '89', '68', '93'], ['段誉', '99', '89', '86', '90'] ]with open('score.csv', 'w', newline='') as f: writer = scv.writer(f) writer.writerows(c)4.2 使用csv库读取csv文件
使用csv库读取csv文件非常简单,直接将reader()对象转换为列表即可:
import csvwith open('score.csv', 'r') as f: c = list(csv.reader(f))print(c)
csv库除了可以处理列表类型的数据外,还可以处理字典类型的数据。目前阶段暂时不要求大家掌握,这里不再做讲解。
五、csv文件操作实例
前面讲了Python中csv文件操作的方法,我们使用一个实际案例看一下它的作用。
由于有灾区发生地震,学校动员大家捐款。老师使用donate.csv文件记录了全班同学的捐款金额。请使用Python编写一个程序,统计全班的捐款总金额和平均金额。csv文件的内容如下表所示:
学号
捐款金额
1
5.00
2
2.00
3
3.00
4
6.00
5
10.00
6
1.00
7
2.00
8
8.00
9
5.00
10
5.00
11
6.00
12
10.00
13
1.00
14
2.00
15
5.00
16
8.00
17
9.00
18
9.00
19
10.00
20
2.00
文件的第一行为表头,我们在计算的时候不需要使用,读取csv文件获取内容后,可以对列表进行切片。由于从文件中获取到的所有数据类型都是字符串,进行运算时我们要进行类型转换。详细代码如下:
import csvwith open('donate.csv', 'r') as f: donate = list(csv.reader(f))amount = 0for row in donate[1:]: amount += float(row[1]) # 每一行第2个元素为金额avg = mount / len(donate[1:])print("总金额:", amount)print("平均金额:", avg)六、课后思考题
编程题:
老师将全班的考试成绩保存在“score.csv”文件中。班级准备评选三好学生,只有语文成绩85分以上并且数学和英语成绩都在90分以上的同学才有资格作为三好学生的候选人。请编写一个程序,统计出有资格参加三好学生评选的同学的学号,并保存到“candidate.csv”文件中。
score.csv的内容如下所示:
学号
语文
数学
英语
1
84
90
89
2
91
89
92
3
89
98
99
4
81
97.5
98.5
5
79
81
89.5
6
88.5
91.5
100
7
79
99
92
8
95
96
97.5
9
87.5
89
97
10
79
78
75.5
11
92.5
99.5
96.5
12
91
91.5
89
13
92
89.5
99
14
84.5
92
94.5
15
85.5
92.5
98
16
92
87.5
90
17
90
90.5
89
18
92
95
98
19
56
49
61
20
88
87.5
91
七、上节课思考题答案
参考代码:
f = open('poem.txt', 'r')poem = f.read()f.close()# 第1题print(poem)# 第2题title = '''Say goodbye to Cambridge AgainXu Zhimo'''poem = title + poemf = open('poem.txt', 'w')f.write(poem)f.close()
注意:参考代码中将Python程序文件和poem.txt放在同一目录下。如果使用其他目录需自行修改。
标签: #怎么保存csv格式