Python处理JSON数据
Posted QuanBBya
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python处理JSON数据相关的知识,希望对你有一定的参考价值。
Python处理JSON数据
- 导入JSON库:
import json
- JSON函数:
json.loads():解析一个有效的JSON字符串
json.load():解析JSON文件的数据
json.loads():解析一个有效的JSON字符串
1. 准备json字符串
2. 把JSON字符串转为python数据
import json
# 把JSON字符串转为python数据
json_rs = '''[
"a": 1,
"b": 2,
"c": 3,
"d": 4,
"e": 5
]'''
rs = json.loads(json_rs)
print(rs)
print(type(rs))
print(type(rs[0]))
# ['a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5]
# <class 'list'>
# <class 'dict'>
json.load():解析JSON文件的数据
1. 创建指向该文件的文件对象
2. 加载该文件对象,转换为python类型的数据
3. 由于文件对象会涉及到打开、关闭文件;因此使用with
import json
# 把JSON文件转为python数据
with open('test.json') as f:
cs = json.load(f)
print(cs)
print(type(cs))
print(type(cs[0]))
# ['a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5]
# <class 'list'>
# <class 'dict'>
json.dumps():将 Python 对象以JSON 字符串出现。
1. python数据
2. 将python转为JSON
import json
# 1. 把python数据转为JSON字符串
json_rs = '''[
"a": "美国",
"b": 2,
"c": 3,
"d": 4,
"e": 5
]'''
rs = json.loads(json_rs)
json_str = json.dumps(rs)
# ["a": "\\u7f8e\\u56fd", "b": 2, "c": 3, "d": 4, "e": 5]
#若不使用ascii编码,需要使用参数ensure_ascii
json_str = json.dumps(rs, ensure_ascii=False)
# ["a": "美国", "b": 2, "c": 3, "d": 4, "e": 5]
json.dump():将 Python 对象以JSON 字符串存入文件
1. 创建待存入的文件对象
2. 把python以JSON格式存入文件
import json
json_rs = '''[
"a": "美国",
"b": 2,
"c": 3,
"d": 4,
"e": 5
]'''
rs = json.loads(json_rs)
# 2. 把python以JSON格式存储到文件中
# (1) 创建要写入的文件对象
with open('test1.json', 'w') as fp:
# (2)把python以JSON格式存入文件
json.dump(rs, fp, ensure_ascii=False)
- json——轻量级的数据交换格式,读取json数据,实际上是把json格式变成python中字典、列表等格式化的数据,方便索引查找。
对象——内容是:键值对的集合——键必须是字符串。
名称:值,名称:值
数组——其中:值可以为字符串、数值、对象、数组
[值,值]
- 注意事项:
(1) 对象的每个属性都要有双引号,否则JSON不能加载;
(2) 键必须是字符串。
- 应用场景:
学习的图书馆系统,可以将图书信息保存为json文件在本地。
游戏的个人设置数据和历史数据都可以保存到本地。在游戏加载过程读取。
网页中的图表数据源一般是json格式,可以爬取后转化为我们想要的数据,而不是图表。
- python 原始类型向 json 类型的转化对照表:
Python——dict list, tuple str, unicode int, long, float True False None
JSON——object array string number true false null
Python处理json数据--世界国家维度数据
1.准备国家的json数据
将准备好的json数据放在指定的目录下,此处可以重这里下载
2.测试编写python脚本处理json提取字段值
#coding:utf8 import time, re, os, sys, time,urllib2,shutil,string import json,datetime #设置utf-8编码格式 reload(sys) sys.setdefaultencoding( "utf-8" ) #获取当前日期的前n天 def getbeforeDay(n=0): now_time = datetime.datetime.now() beforeday = now_time - datetime.timedelta(n) return beforeday.strftime("%Y%m%d") scriptDir = os.getcwd() if len(sys.argv) > 1 : job_date_id = sys.argv[1] else : job_date_id = getbeforeDay(0) print "当前脚本路径:%s,当前参数日期:%s" % (scriptDir,job_date_id) srcdata=‘{"area":"390,580","code":"263","en":"Zimbabwe","cn":"津巴布韦","iso2":"ZW","iso3":"ZWE","population":"11,651,858"}‘ jsondata = json.loads(srcdata) print type(jsondata) print "######遍历key,values######" for key in jsondata.keys(): print key,":",jsondata[key] print "####或者指定key,返回结果####" print jsondata[‘code‘],jsondata[‘cn‘],jsondata[‘en‘],jsondata[‘area‘],jsondata[‘population‘]
3.读取文本循环遍历提取字段值
#coding:utf8 import requests, json, time, re, os, sys, time,urllib2,shutil,string import json,datetime #设置utf-8编码格式 reload(sys) sys.setdefaultencoding( "utf-8" ) #读取文件内容 def getLines(filename): file_object = open(filename,‘rb‘) lines = file_object.readlines() return lines #返回规范字符串 def getFormateContext(*name): format = ‘,‘ context = name[0] for i in name[1:]: context = context + format + str(i) context = str(context).replace(‘(‘, ‘(‘).replace(‘)‘, ‘)‘).replace(‘,‘, ‘,‘).replace(‘:‘, ‘:‘) return context def getbeforeDay(n=0): now_time = datetime.datetime.now() beforeday = now_time - datetime.timedelta(n) return beforeday.strftime("%Y%m%d") #写文件 def Write(filename,context,model=‘a‘): #去除首位空格 filename = filename.strip() #读取目录名称 path = os.path.dirname(filename) #如果目录不存在则创建目录 if not os.path.exists(path): pass #读取文件名称 name = os.path.basename(filename) fp = open(filename,model) fp.write(context+‘ ‘) fp.close() scriptDir = os.getcwd() if len(sys.argv) > 1 : job_date_id = sys.argv[1] else : job_date_id = getbeforeDay(10) print "当前脚本路径:%s,当前参数日期:%s" % (scriptDir,job_date_id) filename="%s/jsondata/country.json" % (scriptDir) for line in getLines(filename): line = line.strip() line = line[1:] line = line[:-2] for value in line.split("},"): srcdata = value+"}" #print srcdata print srcdata jsondata = json.loads(srcdata) #国家代码 code = jsondata[‘code‘] #国家中文名称 cn = jsondata[‘cn‘] #国家英文名称 en = jsondata[‘en‘] #面积 area = jsondata[‘area‘].replace(‘,‘,‘‘) #人口 population = jsondata[‘population‘].replace(‘,‘,‘‘) #iso2 iso2 = jsondata[‘iso2‘] #iso3 iso3 = jsondata[‘iso3‘] #print code,cn,en,area,population,iso2,iso3 context = getFormateContext(code,cn,en,area,population,iso2,iso3) print context Write("country.csv", context, model=‘a‘)
4.最终处理数据结果
CSV格式:
Excel格式:
以上是关于Python处理JSON数据的主要内容,如果未能解决你的问题,请参考以下文章