爬虫基础——CSV数据存储

 

目录

数据存储

CSV文件存储

写入CSV文件

读取


数据存储

文件存储的形式多种多样,可以保存为txt纯文本形式,还可以保存为JSON、CSV格式等

CSV文件存储

CSV,全称为Comma-Separated Values,中文叫做逗号分隔值或字符分隔值,其文件以纯文本形式存储表格数据。

下面介绍如何读取和写入CSV文件

写入CSV文件

看一个简单的例子:

import csv
with open ("data.csv",'w') as csvfile:
	writer=csv.writer(csvfile)
	writer.writerow(['num','name','score'])
	writer.writerow(['1','xyk','99'])
	writer.writerow(['2','ljb','86'])
	writer.writerow(['3','zmh','96'])

首先打开data.csv文件,指定打开方式为w(写入模式),调用csv库的writer()方法初始化写入对象,调用writerow()方法传入每行的数据。运行后就会生成一个名为data.csv的文件,用Excel打开如图:

 如果想要修改分隔符,可以传入delimiter参数。

代码如下:

import csv
with open ("data1.csv",'w') as csvfile:
	writer=csv.writer(csvfile,delimiter=' ')
	writer.writerow(['num','name','score'])
	writer.writerow(['1','xyk','99'])
	writer.writerow(['2','ljb','86'])
	writer.writerow(['3','zmh','96'])

初始化写入对象时传入delimiter为空格,这样每一行就是以空格为分隔,如果想以其他字符为分隔,也可以用delimiter参数传入。 

以text打开如下:

而且我们可以用writerows()方法写入多行

例如:

import csv
with open ("data2.csv",'w') as csvfile:
	writer=csv.writer(csvfile,delimiter=' ')
	writer.writerows([['num','name','score'],['1','xyk','99'],['2','ljb','86'],['3','zmh','96']])

 结果是相同的。

但一般情况下,爬虫爬取的都是结构化数据,我们一般用字典表示,而CSV库也提供了字典的写入方式,如下:

import csv
with open ("data1.csv",'w') as csvfile:
	fieldnames=['num','name','score']
	writer=csv.DictWriter(csvfile,fieldnames=fieldnames)
	writer.writeheader()
	writer.writerow({'num':'1','name':'xyk','score':'99'})
	writer.writerow({'num':'2','name':'zmh','score':'78'})
	writer.writerow({'num':'3','name':'ljb','score':'89'})

定义三个字段,用fieldnames表示,然后用DictWriter初始化一个字典写入对象,调用writeheader()方法写入头信息,再调用writerow()方法传入字典。最终结果与上面都是相同的。

我们还可以追加写入,只需修改文件的打开模式,即将open中第二个参数改成a。

如果我们想要写入中文内容的话,可能会遇到字符编码的问题,我们只需要在open()中给参数指定编码格式,如下:

import csv
with open ("data3.csv",'w',encoding='utf-8') as csvfile:
	fieldnames=['num','name','score']
	writer=csv.DictWriter(csvfile,fieldnames=fieldnames)
	writer.writeheader()
	writer.writerow({'num':'1','name':'张伟','score':'99'})
	writer.writerow({'num':'2','name':'zmh','score':'78'})
	writer.writerow({'num':'3','name':'ljb','score':'89'})

运行结果:

 

读取

我们同样可以利用csv库将刚才写入的文件内容读取出来:

import csv
with open ("data.csv",'r',encoding='utf-8') as csvfile:
	reader=csv.reader(csvfile)
	for row in reader:
		print(row)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值