目录
一、csv文件和Excel文件区别
关键区别:
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']]
二、csv库-读
1、CSV库-读-reader()
以列表的形式读取数据,不用手动处理换行和转列表。
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)
2、CSV库-读-DictReader()
除了第一行,每一行是一个字典。
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库-写
1、CSV库-写-列表形式
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()
2、CSV库-写-字典形式
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()