目录
一、csv文件和Excel文件区别
二、手动转换(文本与列表)
①普通的写(列表嵌套转成文本的表格形式)
②普通的读(文本的表格形式转成列表嵌套)
二、csv库-读
1、CSV库-读-reader()
2、CSV库-读-DictReader()
三、csv库-写
1、CSV库-写-列表形式
2、CSV库-写-字典形式
关键区别:
CSV是一种用于将表格信息保存到扩展名为.csv的带分隔符的文本文件中的格式,而Excel是一种电子表格,可以将文件保留为其专有格式,即xls或xlsx。
CSV是纯文本格式,具有一系列用逗号分隔的值,而Excel是一个二进制文件,其中包含有关工作簿中所有工作表的信息。
CSV文件无法对数据执行操作,而Excel可以对数据执行操作。
CSV文件更快,并且消耗的内存更少,而Excel在导入数据时消耗的内存更多。
可以使用Windows中的任何文本编辑器打开CSV文件,而不能使用文本编辑器打开Excel文件。
相似之处:
两者都可以在电子表格程序中打开
两者都以表格格式(即列和行)存储数据
两者都可以使用Excel中的功能来操纵。
a = [['姓名','年龄','身高','体重','分数'],
['a1', '10', '150', '40', '98'],
['a2', '8', '163', '46', '86'],
['a3', '11', '160', '55', '92']]
file = open('a.csv',mode='w')
for i in a:
file.write(','.join(i)+'\n')
file.close()
a = []
file = open('a.csv',mode='r')
lines = file.readlines()#获取每一行,一行一个列表。
for i in lines:
a.append(i.replace('\n','').split(','))#字符串去换行,字符串转列表
file.close()
print(a)
[['姓名', '年龄', '身高', '体重', '分数'], ['a1', '10', '150', '40', '98'], ['a2', '8', '163', '46', '86'], ['a3', '11', '160', '55', '92']]
以列表的形式读取数据,不用手动处理换行和转列表。
import csv#自带的库
a = []
file = open('a.csv',mode='r')
msg_list = csv.reader(file)
for i in msg_list:
a.append(i)
file.close()
print(a)
除了第一行,每一行是一个字典。
import csv#自带的库
file = open('a.csv',mode='r')
msg_dic = csv.DictReader(file)
for i in msg_dic:#遍历列表(msg_dic相当于列表)
print(dict(i))#每一行是一个字典
file.close()
csv.writer(file)#传入打开的文件
writerow(list)#传入列表
writerows(lists)#传入嵌套列表
csv文件写入时出现空行问题:设置newline=''
file = open('demo.csv', 'w', newline='')
import csv # 自带的库
a = [['姓名', '年龄', '身高', '体重', '分数'],
['a1', '10', '150', '40', '98'],
['a2', '8', '163', '46', '86'],
['a3', '11', '160', '55', '92']]
file = open('a2.csv',mode='w')
csv_writer = csv.writer(file)
csv_writer.writerows(a)
file.close()
csv.DictWriter(file,head_list)#传入打开的文件,传入标题列表
writeheader()#写入表头,不需要单独传入参数
writerows(lists)#传入列表,列表里套着字典。
import csv # 自带的库
a = [{'姓名': 'a1', '年龄': '10', '身高': '150', '体重': '40', '分数': '98'},
{'姓名': 'a2', '年龄': '8', '身高': '163', '体重': '46', '分数': '86'},
{'姓名': 'a3', '年龄': '11', '身高': '160', '体重': '55', '分数': '92'}]
a_head = ['姓名', '年龄', '身高', '体重', '分数']
file = open('a2.csv',mode='w')
csv_writer = csv.DictWriter(file,a_head)
csv_writer.writeheader()
csv_writer.writerows(a)
file.close()