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_newScorecsv命名的文件保存。
'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 tocsv文本中包含逗号_CSV

总结:

  1. 在python当中处理csv文件,可以使用标准库当中的csv模块。其中的writerreader方法可以对csv文件进行读写。
  2. 可以通过with上下文管理的方式打开csv文件,使用open()打开,close()关闭。
  3. 通过next()方法获取其中的元素,也可以使用for循环依次取出所有元素。
with open 'Step_13_SampleFile_score.csv','rb') as csvFile:
reader = csv.DictReader(csvFile)
column = [row for row in readerl ]
print(column)
  1. 使用DictReader,和reader函数类似,接收可迭代的对象,能返回一个可迭代的对象,能返回一个生成器,但是返回的每一个单元格都放在一个字典的值内,而这个字典的键则是这个单元格的标题。