除了用excel处理表格外还有这种方式!!
CSV类型文件格式的介绍
在上篇python从入门到入魔第十天——文件的使用以及数据格式化介绍了用代码实现对CSV二维数据格式的文件进行操作,这才介绍专门对CSV类型文件操作的标准库
二维数据格式——CSV格式文件特点:
1.纯文本格式,通过统一的utf-8编码表示字符
2.以行为单位,开头不留空行,行之间没有空行
3.每行表示一个一维数据,多行表示二维数据
4.以逗号(英文,半角)分割每列数据,列数据为空也要保留逗号 **
5.对于表格内容,可以包含或不包含列名,包含时列名放置在文件第一行
6.采用后缀为.csv为扩展名,可以使用Excel 或 记事本 打开
7.用csv格式存储数据,读写比较方便,易于实现,文件也会比Excel文件小
8.不足之处是csv文件缺少Excel文件本身的很多功能,比如不能嵌入图像和图表,不能生成公式
CSV标准库使用
CSV标准库是python语言内置的库直接import调用即可,无需额外安装
1、读文件
1、csv.reader()创建一个读文件的对象,得到一个文件对象,可以遍历该对象,每行内容作为一个列表返回
操作的文件内容:
import csv
file_read = open("D:\\日常文件\\核心价值观.csv","r")
csv_reader_obj = csv.reader(file_read) #得到一个 csv.reader 对象,遍历对象,将会把每行记录分别作为一个 list 返回
for line in csv_reader_obj:
print(line)
输出结果:
['社会主义核心价值观', '', '', '']
['富强', '民主', '文明', '和谐']
['自由', '平等', '公正', '法制']
['爱国', '敬业', '诚信', '友善']
**输出结果转化为字符串形式:**
import csv
file_read = open("D:/日常文件/核心价值观.csv","r")
csv_reader_obj = csv.reader(file_read)
for line in csv_reder_obj:
s= ""
for ele in line:
s += "{}".format(ele)
print(s)
输出结果:
社会主义核心价值观
富强民主文明和谐
自由平等公正法制
爱国敬业诚信友善
2、csv.DictReader类用于读取有表头的csv文件,用来更好的反应标题与文件内容的映射关系
使用文件
import csv
f = open("D:/日常文件/人员信息.csv","r") #打开文件
dict_reade = csv.DictReader(f) #创建dict_reade对象
header = dict_reade.fieldnames #调用fieldnames方法,调出表头
print(header)
for dict in dict_reade: #遍历文本内容
print(dict)
#print("{:>4}".format(dict["姓名"]),"{:>14}".format(dict["年龄"]))
f.close()
输出:
['姓名', '性别', '年龄', '职业']
{'姓名': '小王', '性别': '男', '年龄': '18', '职业': '学生'}
{'姓名': '小红', '性别': '女', '年龄': '21', '职业': '护士'}
{'姓名': '小李', '性别': '男', '年龄': '19', '职业': '学生'}
{'姓名': '小吕', '性别': '男', '年龄': '18', '职业': '学生'}
#输出:
['姓名', '性别', '年龄', '职业']
小王 18
小红 21
小李 19
小吕 18
2、写文件
1、csv.writer() 创建一个写对象,调用该对象的写方法可写入文件内容
写入一维数据调用.writerow()方法;
写入二位数据不用进行循环循环,可直接调用.writerows()方法;
建议写入列表类型数据
一维数据的写入:
import csv
file_write = open("D:/日常文件/核心价值观.csv","a",newline="") #a为追加写模式 newline=""作用是不写入空行
write = csv.writer(file_write)
list = ["我爱你,中国"]
write.writerow(list) #写入一行
list2 = [["我的祖国"],["繁荣富强"],["日益昌盛"]]
write.writerows(list2) #写入多行
file_write.close()
数据写入的结果:
2、DictWriter类是将字典类型的数据格式写到文件中,将每一个字典以行为单位写入文件中
使用文件:
csv.DictWriter(f, fieldnames, restval="", extrasaction="raise", dialect="excel", *args, **kwds)
参数:
f : 必选,为文件名
fieldnames: 必选,用于指定字典的 key
restval:可选,用于填充缺失的数据,默认为空字符串 “”。
extrasaction:可选 “raise”, “ignore”。默认为 “raise” 表示当要写入的 dict 的 key 在 fieldnames 中不存在时,报错 ValueError,如果为 “ignore” 则表示会忽略这些键值对。
这次换一种方式打开文件
import csv
with open("D:/日常文件/人员信息.csv","w",newline="") as f:
file_title = ["姓名","性别","年龄","职业"] #文件头部
dict_date = {"姓名":"小王","性别":"男","年龄":"18","职业":"学生"}
dict_dates = [{"姓名":"小红","性别":"女","年龄":"21","职业":"护士"},
{"姓名":"小李","性别":"男","年龄":"19","职业":"学生"},
{"姓名":"小吕","性别":"男","年龄":"18","职业":"学生"}]
dict_write = csv.DictWriter(f,fieldnames=file_title) #fieldnames为表头部分
dict_write.writeheader() #写入表头
dict_write.writerow(dict_date) #写入一行
dict_write.writerows(dict_dates) #写入多行
f.close()
dict_write.writeheader() 将 fieldnames 作为一行写入 csv 文件中。
dict_write.writerow() 接收一个 dict,将 dict 中的 value 取出来,组成一个 list,作为一行写入 csv 文件中。
大侠,感觉可以的话就留下你的赞,让更多人看到吧!!