python结合高德地图json数据解析实战

2024-08-0909:23:52后端程序开发Comments1,140 views字数 1427阅读模式
通过一个例子来演练一下如何使用上文提到的函数解析json数据,输出DataFrame格式。
本例子来源于高德地铁城市信息数据(citylist.json),部分数据如下,目的是解析出其中的spell、adcode、cityname三种数据。

python结合高德地图json数据解析实战文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64887.html

最终输出的DataFrame如下,

python结合高德地图json数据解析实战文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64887.html

下面进入讲解部分,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64887.html

1、先将json解析为python对象python结合高德地图json数据解析实战文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64887.html

可见此时json被解析成了python字典类型,对于字典类型来说,我们可以通过键来获取其对应的值,如下,

python结合高德地图json数据解析实战文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64887.html

所以,我们想得到字典中的某一个值,是不是只需要确定它的键就好了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64887.html

以下图为例,

python结合高德地图json数据解析实战文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64887.html

  • 若想提取出来'beijing',是不是只需要找到他的键--'spell',
  • 然而'spell'没有对应的键,但是我们注意到'spell'所在的这个字典(上图绿框),是一个列表的第一个元素,假设这个列表为a,那么a[0]就是绿框所示的东西
  • 而这个列表对应的键又是'citylist','citylist'所在的这个字典又是我们解析出的json对象,这就到源头了。
只需要从源头倒序解析即可。参考如下代码,
import jsonimport pandas as pd
with open(r'subway.json', 'r', encoding='utf-8') as f:    response = json.load(f)    # 获取键: citylist的内容,其内容为一个列表    citylist_content = response['citylist']    # 获取列表中第一个元素,该元素即为上图绿框的内容    first_element = citylist_content[0]    # 获取键: spell 对应的内容    spell_content = first_element['spell']    print(spell_content)
    # 打印出结果为: beijing
下面给出完整代码,
import jsonimport pandas as pd
# 创建一个字典data = {    "spell": [],   # 用来存储json中spell对应的数据    "adcode": [],  # 用来存储json中adcode对应的数据    "cityname": [] # 用来存储json中cityname对应的数据}
with open(r'subway.json', 'r', encoding='utf-8') as f:    response = json.load(f)['citylist']    for res in response:        data['spell'].append(res['spell'])        data['adcode'].append(res['adcode'])        data['cityname'].append(res['cityname'])pd.DataFrame(data)
再给出一种简便实现方法,让我们不需要在创建字典时,挨个写入键,及挨个往键里写入数据,
import jsonimport pandas as pd
with open(r'subway.json', 'r', encoding='utf-8') as f:    response = json.load(f)['citylist']
    # 创建字典    data = {key: [] for key in response[0].keys()}        for res in response:        for key in data.keys():            data[key].append(res[key])  # 写入数据            pd.DataFrame(data)
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/64887.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/64887.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定