08-爬虫数据存取-CSV文件格式处理
四种数据存储部分:
1.JSON文件格式处理
2.CSV文件格式处理
3.Excel文件处理
4.MySQL数据库处理
CSV模块:
CSV(逗号分隔符)文件是表格与数据库操作之中最常用的输入输出格式。在RFC4180中的文件描述标准对CSV格式进行规范之前,CSV格式文件就已经被应用了很多年了。
Python中的CSV模块之中实现了读写CSV格式文件的一些类,他可以让你的程序以一种更容易被Excel处理的格式来输出或者读入数据。
注意:
csv库是python自带的标准库,无需安装,直接可以用import csv
相关文档:
链接:https://pan.baidu.com/s/1ArFGe10lsa9haFGUjqZubw
提取码:o8gp
复制这段内容后打开百度网盘手机App,操作更方便哦
1.读取csv文件的两种方式:
1>csv.reader()函数:这种方式读取到的每一条数据是一个列表,所以需要通过下标的方式获取具体某一个值
2>csv.DictReader()函数:这种方式读取到的每一条数据是要给字典,所以可以通过列名key值获取数据
# 读取csv文件的两种方式 import csv # 1.csv.reader(),返回数据类型是迭代器<class '_csv.reader'>,每一个迭代器里面是列表存储的 with open(r"F:/爬虫/第四章-爬虫数据存储/stock.csv","r",encoding="gbk") as fp: reader = csv.reader(fp) print("-------------------csv.reader()函数:--------------------") for x in reader: # print(x) print(x[3],end=" ") # 2.csv.DictReader(),返回数据类型是迭代器<class '_csv.reader'>,每一个迭代器里面是字典存储的 with open(r"F:/爬虫/第四章-爬虫数据存储/stock.csv","r",encoding="gbk") as fp2: reader = csv.DictReader(fp2) print("\n-----------------csv.DictReader()函数-----------------:") for y in reader: # print(y) print(y["secShortName"],end=" ")
2.写入csv文件的两种方式:
1>writerow函数:使用列表或元组的方式把数据写入到csv文件
2>DictWriter函数:使用字典的方式把数据写入到csv文件
# 写入csv文件的两种方式 import csv headers = ["name","age","height"] student = [ ["东方月初",20,180], ["涂山红红",23,168] ] # 1.writerow函数,写入数据到csv文件 # (newline=""消除空行,这是因为之间写入文件时是f.write("name,age,height\n")指定换行\n,因此不会产生多余空行) with open(r"F:/爬虫/第四章-爬虫数据存储/student1.csv","w",encoding="gbk",newline="") as fp: print("正在使用writerow函数写入文件F:/爬虫/第四章-爬虫数据存储/student1.csv...") writer = csv.writer(fp) # writerow写入一行(标题) writer.writerow(headers) # writerows写入多行(内容) writer.writerows(student) print("写入成功!") headers = ["name","age","height"] student = [ {"name":"王权富贵","age":21,"height":183}, {"name":"清瞳","age":23,"height":160} ] # 2.DictWriter函数,使用字典的方式把数据写入进去 with open(r"F:/爬虫/第四章-爬虫数据存储/student2.csv","w",encoding="gbk",newline="") as fp2: print("\n正在使用DictWriter函数写入文件F:/爬虫/第四章-爬虫数据存储/student2.csv...") writer = csv.DictWriter(fp2,headers) # writeheader写入表头(标题) # 虽然DictWriter创建的时候有一个headers,但是想要写入表头数据进去,还是需要调用 writer.writeheader()方法 writer.writeheader() # writerow写入一行 writer.writerow({"name":"颜如玉","age":20,"height":178}) # writerows写入多行 writer.writerows(student) print("写入成功!")