iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中优雅处理JSON文件的方法是什么
  • 149
分享到

Python中优雅处理JSON文件的方法是什么

2023-06-22 03:06:29 149人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章给大家介绍python中优雅处理JSON文件的方法是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. 引言我们将学习如何使用Python读取、解析和编写jsON文件。我们将讨论如何最好地处理简单的JSON

这篇文章给大家介绍python中优雅处理JSON文件的方法是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

    1. 引言

    我们将学习如何使用Python读取、解析和编写jsON文件。
    我们将讨论如何最好地处理简单的JSON文件以及嵌套的JSON文件,当然我们也将讨论如何访问Json文件数据中的特定值。

    2. 什么是JSON文件?

    JSON(Java Script Object Notation)是一种流行的文件格式,主要用于在WEB应用程序中存储和传输数据。如果我们经常和数据打交道,那么一定或多或少遇到过JSON格式的文件,因此我们有必要来学习如何读取和写入JSON。

    下图为常见的JSON文件结构的示例.

    Python中优雅处理JSON文件的方法是什么

    JSON结构看起来和Python中的字典非常类似。需要注意的是,JSON格式通常是由key: 结对组成,其中key是字符串形式,value是字符串、数字、布尔值、数组、对象或null。

    为了更直观的进行说明,在下图中我们以蓝色突出显示了所有的key,同时以橙色突出显示了所有的value。请注意,以下每组key/value间均使用逗号进行区分。

    Python中优雅处理JSON文件的方法是什么

    3. 使用Python处理JSON文件

    在Python中内置了用于读取JSON文件的函数。以下给出几个如何将JSON文件解析为Python对象的示例。

    3.1. 将JSON文件读取为字典类型

    首先我们需要导入 json库, 接着我们使用open函数来读取JSON文件,最后利用json.load()函数将JSON字符串转化为Python字典形式.

    就这么简单,代码如下:

    import json with open('superheroes.json') as f:    superHeroSquad = json.load(f)    print(type(superHeroSquad))  # Output: dictprint(superHeroSquad.keys())# Output: dict_keys(['squadName', 'homeTown', 'fORMed', 'secretBase', 'active', 'members'])

    上述代码很简单很直观啦,唯一需要注意的是json库中有load()和loads()两个函数.

    函数load()作用为读取JSON文件生成Python对象函数loads()作用为读取JSON 字符串流生成Python对象

    我们可以将loads()函数中的字符s的含义理解成 load for strings.

    3.2. 将JSON文件读取为pandas类型

    当然我们也可以使用Pandas库中的 read_json函数来读取对应的JSON文件,

    代码如下:

    import pandas as pddf = pd.read_json('superheroes.json')

    运行结果如下:

    Python中优雅处理JSON文件的方法是什么

    需要注意的是使用Pandas库不仅仅可以读取电脑本地磁盘上的JSON文件,也可以通过URL读取网络上存放的文件.

    代码如下:

    df1 = pd.read_json('https://mdn.GitHub.io/learning-area/javascript/oojs/json/superheroes.json')

    3.3. 使用Pandas读取嵌套JSON类型

    我们有时候遇到的JSON文件是嵌套的,这经常会让读取工作变得有些困难. 其实嵌套JSON和Python中的嵌套字典思想类似,即字典中嵌套字典.

    我们观察上述例子中的member字段,其值也为字典类型,下图中我们使用缩进来展示嵌套结构。

    Python中优雅处理JSON文件的方法是什么

    设想一下,当我们将JSON文件加载到Pandas数据框架中时,members列如下所示。每行包含一个字典。

    Python中优雅处理JSON文件的方法是什么
    接下来我们讨论两种实现方法,这两种方法中,我们可以解析数据,以便将每个键分解为单独的一列。

    方案一

    我们可以在members这一列上使用apply方法,代码如下:

    df['members'].apply(pd.Series)

    上述代码执行后,members列会被拆分为4个新列,如下所示:

    Python中优雅处理JSON文件的方法是什么

    当然如果你想将上述拆分后的结果和之前的结果进行合并,可以使用pd.concat函数,

    代码如下:

    df = pd.concat([df['members'].apply(pd.Series), df.drop('members', axis = 1)], axis = 1)

    方案二

    在Pandas库中还有一个函数 json_normalize() ,它允许我们把嵌套的JSON展开。这是最简单的方法来解析嵌套的JSON了。

    代码如下:

    def test2():    with open('superheroes.json') as f:        superHeroSquad = json.load(f)    out = pd.json_normalize(superHeroSquad, record_path=['members'],                      meta=['squadName', 'homeTown', 'formed', 'secretBase', 'active'])    print(out)

    上述代码中:

    • record_path为我们希望拆分的列的名字

    • meta为列名的list,为我们输出的次序

    运行结果如下:

    Python中优雅处理JSON文件的方法是什么

    最后我们需要注意的是,我们可以在上述函数json_normalize中添加参数 meta_prefix,这样可以让我们对meta中的名字添加统一的前缀。

    代码如下:

    pd.json_normalize(superHeroSquad, record_path = ['members'], meta = ['squadName', 'homeTown', 'formed', 'secretBase', 'active'], meta_prefix = 'members_')

    运行结果如下:

    Python中优雅处理JSON文件的方法是什么

    3.4. 访问特定位置的数据

    在Python中我们可以通过Key的名字或者下标来访问JSON文件中任意位置的数据。

    比如,假设我们想知道我们的第二个超级英雄的秘密身份。即在下图中,需要访问特定位置的数据在下图中以紫色突出显示。

    Python中优雅处理JSON文件的方法是什么

    为了得到这个值,我们可以直接使用以下语句:

    superHeroSquad['members'][1]['secretIdentity']

    从层次结构的顶部开始,由上往下,我们需要的第一个key是'members',因为它是我们需要访问的值所在的父节点。

    Python中优雅处理JSON文件的方法是什么

    在‘members'对应的键值中,我们看中括号,然后下标1表示list中的第二个成员。接着我们来看字段'secretIdentity',如下所示:

    Python中优雅处理JSON文件的方法是什么

    将上述过程合并在一起,我们就可以得到我们特定位置出的值为'Jane Wilson'。

    细心的同学可能已经注意到,我在上面的JSON片段中突出显示了两个蓝色的值。希望感兴趣的同学们可以作为练习来尝试访问这些值。欢迎在文章后面的评论区中分享你的代码。

    3.5. 导出JSON

    让我们编辑一下我们最后一位超级英雄,将其secretIdentity从‘Unknow'更改为‘Will Smith',接着将这个字典导出为JSON文件。这里我们将使用json.dump()函数将字典写入文件。

    代码如下:

    #update secret identity of Eternal FlamesuperHeroSquad['members'][2]['secretIdentity'] = 'Will Smith'with open('superheroes.json', 'w') as file:    json.dump(superHeroSquad, file)

    上述代码运行后,我们打开文件superheroes.json,可以发现最后一名超级英雄的secretIdentity已经由Unknow变为了Will Smith.

    当然,作为选择,我们也可以使用Pandas中的to_json()函数,完成上述功能。

    df.to_json('superheroes.json')

    3.6. 格式化输出

    我们有时候在终端直接打印json文件,通常会得到很不美观的输出,样例如下:

    Python中优雅处理JSON文件的方法是什么

    为了让其看起来更加美观,我们这里可以在函数json.dump中采用参数indent参数来控制输出格式,代码如下:

    with open('superheroes.json', 'w') as file:    json.dump(superHeroSquad, file, indent = 4)

    结果输出如下,是不是看上去更加美观啦。。。

    Python中优雅处理JSON文件的方法是什么

    3.7. 输出字段排序

    当然dump函数中含有字段sort_key,通过设置其值,可以控制输出时是否对key进行排序。需要注意所有的key包括嵌套的key都会进行排序。

    样例如下:

    with open('superheroes.json', 'w') as file:    json.dump(superHeroSquad, file, indent = 4, sort_keys = True)

    运行结果如下:

    Python中优雅处理JSON文件的方法是什么

    4.总结

    最后,让我们对本文做一下回顾,总结如下:

    • JSON文件通常由key:结对组成,这里key通常为字符串格式,value一般为字符串,数字,布尔,数组,对象或者null

    • Python有内置函数可以方便的读取JSON文件转化为Python中的字典类型或者Pandas可以处理的类型

    • 使用pd.read_json()来读取简单的JSON,使用pd.json_normalize()来读取嵌套的JSON

    • 我们可以通过key的名字或者下标来方便的获取JSON文件中特定位置的值

    • Python对象可以转化为JSON文件,同时可以对输出进行格式化输出以增加可读性

    关于Python中优雅处理JSON文件的方法是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

    --结束END--

    本文标题: Python中优雅处理JSON文件的方法是什么

    本文链接: https://www.lsjlt.com/news/302421.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Python中优雅处理JSON文件的方法是什么
      这篇文章给大家介绍Python中优雅处理JSON文件的方法是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. 引言我们将学习如何使用Python读取、解析和编写JSON文件。我们将讨论如何最好地处理简单的JSON...
      99+
      2023-06-22
    • Python中优雅处理JSON文件的方法实例
      目录1. 引言2. 什么是JSON文件?3. 使用Python处理JSON文件3.1. 将JSON文件读取为字典类型3.2. 将JSON文件读取为Pandas类型3.3. 使...
      99+
      2024-04-02
    • Python中使用Numpy优化文件处理的方法是什么?
      文件处理是编程中常见的任务之一,而Python中的Numpy库提供了一些优化文件处理的方法。本文将介绍如何使用Numpy库来优化文件处理,并通过演示代码来说明其实现方法。 一、Numpy库简介 Numpy是Python中一个重要的科学计算...
      99+
      2023-06-01
      numpy django 文件
    • python生成json文件的方法是什么
      在Python中生成JSON文件的方法是使用`json`模块。下面是一个简单的示例,展示如何使用`json`模块创建一个JSON文件...
      99+
      2023-09-05
      python json
    • python处理csv文件的方法是什么
      在Python中处理CSV(逗号分隔值)文件有多种方法,以下是其中几种常用的方法:1. 使用csv模块:Python内置的csv模块...
      99+
      2023-09-15
      python
    • Go中JSON处理方法是什么
      这篇文章主要介绍“Go中JSON处理方法是什么”,在日常操作中,相信很多人在Go中JSON处理方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go中JSON处理方法是什么”的疑惑有所帮助!接下来,请跟...
      99+
      2023-06-27
    • Python进行文件处理的方法是什么
      这篇文章主要介绍“Python进行文件处理的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python进行文件处理的方法是什么”文章能帮助大家解决问题。1.文件介绍python操作文件1....
      99+
      2023-07-05
    • 关于python处理大型json文件的方法
      如图所示,要处理的数据是一个json数组,而且非常大 下图为电脑配置,使用 json.load() 方法加载上述json文件电脑直接卡死 解决思路:     先用python进行...
      99+
      2024-04-02
    • React Hook Form优雅处理表单使用的方法是什么
      这篇“React Hook Form优雅处理表单使用的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看...
      99+
      2023-07-05
    • python处理统一码文件的方法是什么
      这篇文章主要讲解了“python处理统一码文件的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python处理统一码文件的方法是什么”吧!对于自然语言处理的从业者,处理统一码文件是...
      99+
      2023-06-16
    • python读取TXT文件并处理的方法是什么
      在Python中,读取和处理TXT文件的常用方法有以下几种:1. 使用open()函数打开文件,并使用read()方法读取文件内容:...
      99+
      2023-09-25
      python
    • Django中文件上传处理的方法是什么
      在Django中,文件上传处理的方法通常是通过使用FileField或者ImageField字段来定义在模型中。这两个字段会在数据库...
      99+
      2024-04-02
    • R语言处理JSON文件的方法
      JSON文件以人类可读格式将数据存储为文本。 Json代表JavaScript Object Notation。 R可以使用rjson包读取JSON文件。 安装rjson包 在R语言...
      99+
      2024-04-02
    • Python文本预处理的方法是什么
      本篇内容介绍了“Python文本预处理的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!将文本中出现的字母转化为小写示例1:将字母转...
      99+
      2023-06-16
    • Python类对象的JSON序列化处理方法是什么
      这篇文章主要介绍“Python类对象的JSON序列化处理方法是什么”,在日常操作中,相信很多人在Python类对象的JSON序列化处理方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
      99+
      2024-04-02
    • Vuex中actions优雅处理接口请求的方法
      目录前言文件结构前言 在项目开发中,如果使用到了 vuex,通常我会将所有的接口请求单独用一个文件管理,而业务逻辑写在 actions 中,一方面方便统一管理项目中的所有请求,其次代...
      99+
      2022-11-16
      Vuex actions接口请求 Vuex接口请求 Vuex actions请求
    • Linux中sparse文件处理与传输的方法是什么
      本篇内容主要讲解“Linux中sparse文件处理与传输的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中sparse文件处理与传输的方法是什么”吧!0.  什么是...
      99+
      2023-06-16
    • JavaScript优雅处理对象的6种方法
      目录前言1、Object.freeze()2、Object.seal()3、Object.keys()4、Object.values()5、Object.create()6、Obje...
      99+
      2024-04-02
    • python中多种文件处理的方法
      基础操作在python 中,文件的操作分为面向目录和面向文件的,本质都是一样的。面向目录的常见操作见下表:方法作用方法作用os.getcwd()得到当前目录os.listdir()列出所有文件和目录os.removedirs( xxx)删除...
      99+
      2023-01-31
      多种 文件 方法
    • python优化数据预处理方法是什么
      本篇内容主要讲解“python优化数据预处理方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python优化数据预处理方法是什么”吧!我们知道现实中的数据通常是杂乱无章的,需要大量的预处...
      99+
      2023-06-25
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作