csv模块的使用
前言
CSV是数据处理中经常会用到的一种文件格式,一般也被叫做逗号分隔值文件,是一种纯文本文件,使用特定的结构来排列表格数据,可以使用 Excel 软件或者文本文档打开 。
csv模块 是 python标准库模块,无需手动安装,可以直接导入 import csv # 导入csv模块
,此篇文章介绍csv模块的基本使用方法。
正文
1、csv模块写入数据
1.1、csv模块写入数据 使用流程
- 打开csv文件
file = open("xxx.csv", "w", newline="") # 打开文件
- 初始化写入对象
writer = csv.writer(file) # 初始化写入对象
- 写入数据
writer.writerow()
&writer.writerows() # 写入数据
1.2、csv.writer()方法:写入数据
csv 文件写入用到的模块方法是 csv.writer(),该方法原型:csv.writer(csvfile, dialect='excel', **fmtparams)
1.2.1、writer.writerow() 方法: 单行写入
writerow([]) 单行写入,一次只能写入一行数据
示例:
with open("test.csv", "w") as f: # 打开文件,后缀为.csv
writer = csv.writer(f) # 初始化写入对象
writer.writerow(["1", "1000"]) # 写入数据
1.2.2、writer.writerows()方法:多行写入
writerows([(),(),()]) 多行写入,一次写入多行数据
示例:
lst = [("1", "1000"), ("2", "998"), ("3", "1005")]
with open("test.csv", "w", newline="") as f: # 打开文件,后缀为.csv
writer = csv.writer(f) # 初始化写入对象
writer.writerows(lst) # 写入数据
注意: 需要加入newline=“”,否则每写入一行会有一空行;windows系统会出现bug,所以需要添加该语句,linux系统不存在该bug。
1.3、csv.DictWriter()方法:写入数据
DictWriter(file,[])两个参数为 打开的文件对象和csv 的列头行列表
示例:
data_list = [
{"序号": "0", "数据": 1000},
{"序号": "1", "数据": 998},
{"序号": "2", "数据": 1005},
] # 定义数据列表,列表的每个元素都是字典
header_list = ["序号", "数据"] # 创建列头行header 列表
with open("test.csv", "w", newline="") as f: # 打开文件,后缀为.csv
writer = csv.DictWriter(f,header_list) # 初始化写入对象,将 header 列表作为参数传入
writer.writeheader() # 写入列头
writer.writerows(data_list) # 写入数据
注意:
在写入正式数据前,需使用 writeheader()方法 写入列头
2、csv模块读取数据
2.1、csv模块读取数据 使用流程
- 打开csv文件
file = open("xxx.csv", "r", newline="") # 打开文件
- 初始化读取对象
reader = csv.reader(file)
- 处理读取的数据
list(reader)
将reader转化为list,方便进行遍历
2.2、csv.reader()方法:读取数据
reader(),以列表的形式返回读取的数据
示例:
with open('test.csv', 'r', newline='') as f: # 打开文件
reader = csv.reader(f) # 创建reader对象
for r in reader: # 输出信息
print(r)
['1', '1000']
['2', '998']
['3', '1005']
2.3、csv.DictReader()方法:读取数据
DictReader(),以字典的形式返回读取的数据
示例:
with open('test.csv', 'r', newline='') as f: # 打开文件
reader = csv.DictReader(f) # 创建DictReader对象
for r in reader: # 输出信息
print(r)
{'序号': '0', '数据': '1000'}
{'序号': '1', '数据': '998'}
{'序号': '2', '数据': '1005'}
注意: 如果直接打印reader,会返回<csv.DictReader object at 0x000001F82718EF40>
,需要对其进行转化 list(reader)
文章出处登录后可见!
已经登录?立即刷新