python_csv
1.CSV定义
Comma Separated Values,简称CSV,它是一种以逗号分隔数值的文件类型。在数据库或电子表格中,它是最常见的导入导出格式,通常以纯文本的方式存储数据表。
2.CSV使用
1.提取其中某一列可以使用下面的方法:
file = open('Step_13_SampleFile_score.csv', 'r')
contents = file.read()
print(contents)
file.close()
或:
with open('Step_13_SampleFile_score.csv', 'r') as file:
contents = file.read()
print(contents)
输出结果:
ID,Python,C++,Javascript,Go
20190001,A,A,A,A
20190002,A,B,A,C
20190003,C,B,C,A
2. 实例:
import csv
fileMatrix = []
with open('Step_13_SampleFile_score.csv', 'r') as fileRead:
for lineContent in fileRead:
fileMatrix.append(lineContent.strip('\n').split(','))
print("[Before]")
print(fileMatrix)
fileMatrix[0].extend(["HTML5", "CSS3"])
lenFileMatrix = len(fileMatrix)
for i in range(lenFileMatrix - 1):
i = i + 1
fileMatrix[i].extend(["_", "_"])
print("[After]")
print(fileMatrix)
with open('Step_13_SampleFile_newScore.csv', 'w') as fileWrite:
myWriter = csv.writer(fileWrite)
for i in range(lenFileMatrix):
myWriter.writerow(fileMatrix[i])
01 import csv
导入csv模块
02 fileMatrix = []
用List in Lists处理,因此,事先制作出没有任何信息的清单,名字为"fileMatrix"
03 with open('Step_13_SampleFile_score.csv', 'r') as fileRead:
在执行程序的目录中寻找 Step_13_SampleFile_score.csv
,开启阅读专用模式(r),
在实际应用程序中,您将使用一个名为fileRead
的文件,Class
的对象。with
命令可自动执行您的close()
,从而为您管理您的光盘提供一个安全的环境。
04 for lineContent in fileRead:
从输入端口fileRead
对象中读取一行一行,以字符串的形式保存到lineContent
中。
如果你读完最后一行,则没有更多的信息,for
句将退出。
05 fileMatrix.append(lineContent.strip('\n').split(','))
首先从文件中读取的lineContent
为字符串,需要转换到列表中。
首先要做的事是,将每一行添加的换行符号(\n
)读取后逐行删除,以便在文件中存储。
它的代码就是strip('\n')
因此,要删除朗读的最后一行"\n"
,将会成为lineContent.strip('\n')
。
这样做之后,再把它们分割成数字串上的逗号(','
),以使它们成为列表,因此要实行split(',')
函数。
这样,整个过程完成后,条目将会被填满,并且将条目添加到前面的fileMatrix
。
重复操作的结果,文件的一行变成了相当于一名成绩的列表,被添加到数据最后。
06 print("[Before]")
07 print(fileMatrix)
您可以在屏幕上打印一下星期二的信息是否已被编辑成了列表 list in Lists的形状。
08 fileMatrix[0].extend(["HTML5", "CSS3"])
首先将课程名添加到数据的第一行(索引为0的列表)
09 lenFileMatrix = len(fileMatrix)
其次,现有的学生没有新课程的成绩,应该加上空格。
但是要知道学生有多少人,信息可以相应的输入新课程的成绩,所以计算全体学生的人数。
tips:
第一排有科目名,实际学生数比上排少一个。
因此,在以下10个选项中计算的学生数中,至少会重复一个选项。
10 for i in range(lenFileMatrix - 1):
11 i = i + 1
12 fileMatrix[i].extend(["_", "_"])
第10行表示第1行是表示课名,所以减少了1行,只重复学生人数。
但是当第10行i值从0开始时,
我们从第11行增加一个值,作为学生信息的起点,从第1列开始,我们只对学生进行一行操作。
在第12排,在每个学生信息列表的最后,将新两门课程的成绩追加为空格。
因为新课程的成绩使用了列表,所以使用了extend
函数来合并到现有学生的成绩列表中。
13 print("[After]")
14 print(fileMatrix)
在屏幕上如实显示新两门课程的名字和是否添加了各学生的成绩。
15 with open('Step_13_SampleFile_newScore.csv', 'w') as fileWrite:
最后,把制作好的新的成绩Step_13_SampleFile_newScore
以csv
命名的文件保存。
将'w'
作为存储用途的open
函数选项,如果现有的文件名相同,将删除全部内容,并重新打开一个'w'
。
并在程序中创建一个执行此任务的划一fileWrite
对象。
16 myWriter = csv.writer(fileWrite)
那是我们的csv
模块import
的原因。
第五排的工作要按逆序进行,
因此,我们已决定使用csv模块内的writer函数自动保存列表,以csv存根形式。
作为csv模式的视图处理给定的视图的语义,现在我们创建了由csv
模块代替fileWrite
对象工作的myWriter
。
17 for i in range(lenFileMatrix):
18 myWriter.writerow(fileMatrix[i])
现在将具有结果值的List in Lists
形态的fileMatrix
中,一条一条储存为csv形态的数据。
因此,自动在列表信息之间加入"点",转换成文字序列,在csv字节进行储存。
打印结果如下:在
总结:
- 在python当中处理csv文件,可以使用标准库当中的csv模块。其中的
writer
和reader
方法可以对csv
文件进行读写。 - 可以通过with上下文管理的方式打开csv文件,使用
open()
打开,close()
关闭。 - 通过
next()
方法获取其中的元素,也可以使用for
循环依次取出所有元素。
with open 'Step_13_SampleFile_score.csv','rb') as csvFile:
reader = csv.DictReader(csvFile)
column = [row for row in readerl ]
print(column)
- 使用
DictReader
,和reader
函数类似,接收可迭代的对象,能返回一个可迭代的对象,能返回一个生成器,但是返回的每一个单元格都放在一个字典的值内,而这个字典的键则是这个单元格的标题。