【Python军火库】自带的CSV模块,实现CSV文件读写操作


一、认识CSV

CSV:Comma-Separated Values 逗号分隔值

顾名思义,通常以逗号(也不一定是)分隔的,其文件以纯文本形式存储表格数据(数字和文本)。

泛指具有以下特征的任何文件

  1. 纯文本,使用某个字符集,比如ASCII、Unicode、EBCDIC或GB2312;
  2. 由记录组成(典型的是每行一条记录);
  3. 每条记录被分隔符分隔为字段(典型分隔符有逗号、分号或制表符;有时分隔符可以包括可选的空格);
  4. 每条记录都有同样的字段序列。

其规则

  1. 开头是不留空,以行为单位。
  2. 可含或不含列名,含列名则居文件第一行。
  3. 一行数据不跨行,无空行。
  4. 以半角逗号(即,)作分隔符,列为空也要表达其存在。
  5. 列内容如存在半角引号(即"),替换成半角双引号("")转义,即用半角引号(即"")将该字段值包含起来。
  6. 文件读写时引号,逗号操作规则互逆。
  7. 内码格式不限,可为 ASCII、Unicode 或者其他。
  8. 不支持数字
  9. 不支持特殊字符

CSV格式文件的优势

  1. csv文件被许多种类的程序广泛支持
  2. 可以在文本编辑器中查看(包括IDLE文件编辑器)
  3. csv文件可以直接用Excel打开
  4. 同样的内容,csv文件比Excel文件小的得多
  5. csv格式适合保存海量数据。可以像txt一样以文本流的方式进行流式处理,不但能导出海量信息,而且流式处理占用内存极低,服务器对浏览器的响应也是非常迅速的
    在这里插入图片描述

——

二、CSV模块之Reader对象

在Python中自带了CSV模块可以轻松容易地解析CSV文件。

通过创建Reader对象,我们可以实现从CSV文件读取数据操作。

import csv
exampleFile = open('example.csv')               # 打开CSV文件
exampleReader = csv.reader(exampleFile)   # 创建Reader对象
exampleData = list(exampleReader)             # 创建数据的列表的列表
print(exampleData)

# 可以通过[row][col]来访问特定的行和列的值
print(exampleData[0][0])
print(exampleData[0][1])
print(exampleData[1][1])
print(exampleData[2][2])

其打印结果如下:
在这里插入图片描述
如果我们需要整整齐齐打印出CSV文件的所有数据,可以采用for循环的方式

import csv
exampleFile = open('example.csv')               # 打开CSV文件
exampleReader = csv.reader(exampleFile)   # 创建Reader对象

# 通过for循环来从Reader对象读取数据
for row in exampleReader:
	print('Row #'+str(exampleReader.line_num)+' '+str(row))   # line_num 储存着Reader对象的行号

其打印结果如下:
在这里插入图片描述

——

三、CSV模块之Writer对象

如果我们要将数据写入CSV文件,那么就要使用csv.writer()函数来创建Writer对象。

import csv
outputFile = open('output.csv','w',newline='')   # 创建CSV文件,注意如果没有newline='',则会有两倍行距
outputWriter = csv.writer(outputFile)       # 创建Writer对象
# 以writerow 的方式写入数据
outputWriter.writerow(['spam','eggs','bacon','ham'])         
outputWriter.writerow(['Hello, world!','eggs','bacon','ham'])
outputWriter.writerow([1, 2, 3.1415, 4])
outputFile.close()

生成的CSV文件,用Excel打开
在这里插入图片描述
如果在open()函数中没有参数 newline=’’,打开后会发现行与行之间会多个空行。
在这里插入图片描述
还有两个重要的参数要介绍下,delimiter(分隔符)和lineterminator(行终止符)。

如果用制表符代替逗号来分隔单元格,并希望有两倍行距

import csv
csvFile = open('example.tsv','w',newline='')      # 文件扩展名tsv,表示制表符分隔的值
csvWriter = csv.writer(csvFile, delimiter='\t', lineterminator='\n\n')  # 分隔符为制表符,行终止符为两倍换行符
csvWriter.writerow(['apples','oranges','grapes'])
csvWriter.writerow(['eggs','bacon','ham'])
csvWriter.writerow(['ham','ham','ham','ham','ham'])
csvFile.close()

最终我们打开记事本查看数据
在这里插入图片描述
——

四、复盘总结

今天学习了Python自带的CSV模块来实现对CSV文件的读写。

总结一下今日所学:

  1. CSV:Comma-Separated Values 逗号分隔值
  2. CSV文件的优势:被多程序支持,内存小,适合保存海量数据
  3. CSV文件的读取:
    • 调用csv.reader()方法,创建Reader对象
    • list()生成列表的列表,[row][col]定位访问
    • 通过for循环逐行打印数据
    • Reader.line_num保存的行编号
  4. CSV文件的写入:
    • 调用csv.writer()方法,创建Writer对象
    • open()时,要传入参数 newline=’’
    • 调用writerow()方法写入数据
    • delimiter关键字 指定分隔符
    • lineterminator关键字 指定行终止符

注:本中的案例均来自《Python编程快速上手 让繁琐工作自动化》——[美] Al Sweigart 斯维加特
在这里插入图片描述

发布了35 篇原创文章 · 获赞 35 · 访问量 2755

猜你喜欢

转载自blog.csdn.net/nilvya/article/details/103809369
今日推荐