获得列表json数据_跟我快速学数据存储:文件存储

1

Python的存储技术

编写程序通常涉及到需要将数据永久存储下来。通常数据存储分为文件存储和数据库存储。Python主要提供了如下的存储技术:

(1)文件存储:JSON(XML)存储、csv文件存储

(2)数据库存储:MySQL、Redis、Mongdb等数据库存储

数据在被存储后,另一种操作就是要读取里面的数据。

2

JSON存储

例1是将JSON数据保存并读取。例子中的JSON数据来自百度搜索,然后人工录入近两年的GPD数据。在真实的应用场景中,需要保存的数据大部分来自于爬虫数据,可以参考我们前面公众号文章中的爬虫数据获取案例,将这些技术组合起来使用即可。

例1:保存JSON数据,并读取

import json#JSON数据的结构:[{},{},{}...]data=[{"year":2019,"gdp":990865.10,       "primary_industry":70466.70,       "secondary_industry":386165.30,       "third_industry":534233.10},      {"year": 2018,   "gdp": 900309.00,       "primary_industry":   64734.00,       "secondary_industry":   366001.00,       "third_industry": 469575.00}      ]def save_data(filename):    fo = open(filename, "w")    json.dump(data, fo)    fo.close()def get_data(filename):    fo = open(filename)    mydata = json.load(fo)    return mydatasave_data("c:\gdp.json")mydata=get_data("c:\gdp.json")print(type(mydata))for gdp in mydata:    print(gdp)

下面对代码进行解释:

(1)open(filename, "w"):打开一个文件,返回一个file对象,参数“w”表示只用于文件写入。默认是以只读方式打开。

(2)json.dump(data, fo):将数据序列化为JSON对象后,写入文件。

(3)json.load(fo):从文件中读取JSON形式的字符串数据,返回JSON对象列表。

3

csv数据存储

csv是一种字符分隔符格式的文件,常用来存储表格数据。csv文件可以被Excel软件打开。例2演示如何读取JSON文件中的数据,写入csv文件中,并从csv文件中读取数据。由于例1已经有读写JSON的代码,在例2中,演示如何将例1的方法封装起来,进行模块调用。下面首先介绍如何自定义模块。

(1)在项目下创建一个目录,即模块的名字,例如本例的myJSON。

b6b33a0883a24be5b1cae1bd3425a32c.png

图1 创建模块

(2)在模块下面,新建一个文件__init__.py(注意:该名字是固定的,init前后各两个下划线)。

(3)在__init__.py中编写代码。把例1中save_data("c:\gdp.json")以上的代码复制进去,即可。

例2:csv存储与读取

import csv

import myJSON 

gdp_json_list=myJSON.get_data("c:\gdp.json")

#获得JSON的键

gdp_title =   gdp_json_list[0].keys()

gdp_data = []

for data in gdp_json_list:

    gdp_data.append(data.values())

#打开gdp.csv文件,如果不存在,则新建

#参数newline=''表示不产生空行

csv_file = open('gdp.csv',   'w',newline='')

csv_writer =   csv.writer(csv_file)

#写入1行数据:用作表头

csv_writer.writerow(gdp_title)

#写入多行数据:GDP数据

csv_writer.writerows(gdp_data)

#关闭文件

csv_file.close()

with open('gdp.csv') as   csv_file:

    reader = csv.reader(csv_file)

    for row in reader:

        print(str(row))

下面对代码进行解释:

(1)import csv:导入csv模块

(2)import myJSON:导入前面自定义的模块。

(3)gdp_data.append(data.values()):data.values()为JSON关键字对应的值,用dict_values([值1,值2])表示,可以通过list(data.values())将其转换成列表。append()方法是在列表末尾添加新的对象,这里的对象是JSON值。

(4)csv.writer(csv_file):针对要写入csv数据的文件,返回一个csv writer对象,用于向csv文件进行数据写入。

(5)csv.reader(csv_file):针对要读取csv数据的文件,返回一个csv reader对象,用于向csv文件读取数据。

END7105351831fe48940556908ed5450e6a.gif

撰稿 | 谢景明

编辑 | 秦慧

审核 | 谢景明、冯敬益

a9d82c4e45195267e4c671a28b1063b6.gif4902d9302f16867ad067f73d537fad2d.png微信号:xinxisuyang-扫码关注我们-a9d82c4e45195267e4c671a28b1063b6.gif
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值