文章目录
- 一、什么是CSV文件?
- 二、CSV文件的写入操作
- 1、使用CSV内置库进行写入
- 2、用pandas库进行写入操作
- 三、CSV文件的读取操作
- 1、用CSV内置库来读取
- 2、用pandas来读取
之前写的一篇2000字不小心被我弄丢了,含着泪再写一遍吧。CSV文件平常接触的不多,但它是非常有用的一种文件格式,经常用来作为不同程序之间的数据交互格式。它特定的格式,带给了它无限的魅力。读了下面这篇文章,你就会发现它的迷人之处。
一、什么是CSV文件?
CSV是Comma Separate Values的缩写,翻译过来就是逗号分隔值。顾名思义,那我们就知道它里面是储存的一些值,并且他们是用逗号隔开的。但事实上,有时候不一定是逗号,可以是其他字符。
看一下百科给出的定义:逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本来开启,再则先另存新档后用EXCEL开启,也是方法之一。
上面这段文字气氛过于紧张,专业性比较强,那我们就简单粗暴的理解一下吧。其实换言之,CSV文件和txt文件比较相似,里面都是一些文本还有分隔字符,txt文件里面也有逗号的。但是,不同之处是,CSV文件中的逗号是有特殊含义的。并且这个csv文件可以用记事本打开、编辑,也可以使用excel打开、编辑。当然,两种方式打开看到的肯定不一样,要不然费这么大功夫干嘛。下面举个例子来看一下:
我们新建一个CSV文件叫做new,也就是new.csv,用记事本打开,在里面输入几个字符,几个逗号,保存、关闭。
关闭之后我们再使用excel打开。
我们发现这几个字符整整齐齐的放在表格里面了,并且以逗号为分隔符,放在了不同的单元格里面。工作簿和工作表都是以‘new’来命名的。
我们再在excel中把这个csv文件编辑一下,用记事本打开,看看发生什么变化。
我把这几个字符放在两个单元格中。
然后保存、关闭,用记事本打开,发现变成了两个小段,用逗号隔开。
那么到现在我们应该已经比较了解这个CSV文件了,下面我们使用python来对它进行读写操作。
二、CSV文件的写入操作
1、使用CSV内置库进行写入
不同于txt文件,这里在操作之前需要引入一个python的内置标准库,叫做csv。这个库是python自带的,不需要自己去下载了。
写入操作和txt文件的操作略有不同,下面附上代码:
import csv
with open('c:/python/new.csv','w')as file:
dtwt=csv.writer(file)
dtwt.writerow(['世','间','美','好','与','你','环环','相','扣'])
dtwt.writerow(['l','i','s','a','最','美'])
打开文件看一下结果。
发现中间空了一行,这是因为它默认以换行符‘\n’结尾。相信你和我一样不喜欢空行,我们可以更改为以空字符结尾就好了。代码更改为这样:
import csv
with open('c:/python/new.csv','w',newline='')as file:
dtwt=csv.writer(file)
dtwt.writerow(['世','间','美','好','与','你','环环','相','扣'])
dtwt.writerow(['l','i','s','a','最','美'])
然后就发现没有空行了。
2、用pandas库进行写入操作
pandas库是一个第三方库,以大熊猫命名,大熊猫身上就两种颜色,非黑即白,可想而知它使用起来简洁明了。它的好处就是代码简单,输出也非常直观漂亮。但是它不是内置库,需要我们自己去安装,安装也很简单,pip install pandas就可以了。当然,安装了anaconda以后,这些都是自带的。
下面附上用pandas来写入文件的代码:
import pandas as pd
with open('c:/python/new.csv','w')as file:
name=['lisa','xiao','green','jerry']
age=[18,22,18,40]
data=pd.DataFrame({'name':name,'age':age})
data.to_csv(file)
看一下写入的结果,非常整齐,直观。
三、CSV文件的读取操作
1、用CSV内置库来读取
和上面的写入操作对照起来,略有不同。下面先附上代码:
import csv
with open('c:/python/new.csv','r',newline='')as file:
dtrd=csv.reader(file)
print(next(dtrd))
print(next(dtrd))
print(next(dtrd))
print(next(dtrd))
print(next(dtrd))
print(next(dtrd))
#for i in dtrd:
#print(i)
运行结果是这样子的:
注意这里的dtrd是一个迭代器,需要用next()来逐行读取。
2、用pandas来读取
上面可以发现,使用csv来读取还是比较麻烦的。下面直接附上代码:
import pandas as pd
with open('c:/python/new.csv','r',newline='')as file:
print(pd.read_csv(file))
代码是不是一下子少了很多,并且读取出来也是表格的形式。