Python写入JSON的全面探索

一、Python写入JSON文件

JSON(JavaScript Object Notation)是一种轻量级的数据格式,广泛应用于前后端数据交互和数据存储。Python可以通过内置的json库,将Python对象序列化为JSON格式,便于数据传输和存储。下面是一个简单的示例,将Python列表数据写入JSON文件

import json

data = {'name': 'Alice', 'age': 18, 'hobbies': ['reading', 'sports']}
with open('data.json', 'w') as f:
    json.dump(data, f)

使用json.dump()函数将Python字典对象data写入文件data.json中。如果文件不存在,则会自动创建;如果文件中已有数据,会被新的数据覆盖。如果要追加数据而非覆盖,可以使用json.dump()函数的append参数。

二、Python写入JSON文件怎么换行

JSON文件通常是单行存储,即所有的数据都在一行中,不方便查看和编辑。我们可以通过使用json.dump()函数的indent参数控制换行和缩进。以下是示例代码:

data = {'name': 'Bob', 'age': 20, 'hobbies': ['music', 'travel']}
with open('data.json', 'w') as f:
    json.dump(data, f, indent=2)

indent参数指定缩进的空格数,本例中设置为2。执行后,数据将以带缩进的多行格式存储在data.json文件中。

三、Python写入JSON不追加

在Python写入JSON文件时,如果文件中已经存在数据,新的数据默认会覆盖旧的数据。如果需要在文件末尾追加新数据而非覆盖旧数据,可以使用json.dump()函数的append参数。以下是示例代码:

data = {'name': 'Clare', 'age': 22, 'hobbies': ['cooking', 'photography']}
with open('data.json', 'a') as f:
    json.dump(data, f, indent=2)

注意,这里的写入模式使用的是”a”而非”w”,表示以追加模式打开文件。另外,JSON文件的格式仍然是单行存储,只是被多次写入(追加)。

四、Python写入JSON文件乱码

有时在写入JSON文件时,可能会遇到中文乱码的问题。这是因为在默认情况下,Python使用ASCII编码将字符串转化为JSON格式,如果字符串包含中文等非ASCII字符,就会出现乱码。可以使用json.dump()函数的ensure_ascii参数控制编码方式。以下是示例代码:

data = {'name': '张三', 'age': 24, 'hobbies': ['coding', 'guitar']}
with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

在打开文件时,需要指定编码方式为utf-8。设置ensure_ascii参数为False后,Python会使用utf-8编码将字符串转化为JSON格式,避免中文乱码。

五、Python写入JSON没有文件

在写入JSON文件时,如果文件不存在,Python会自动创建。但如果文件所在的目录不存在,会出现异常信息。可以使用os库的makedirs函数创建目录。以下是示例代码:

import os

if not os.path.exists('data'):
    os.makedirs('data')

data = {'name': '李四', 'age': 26, 'hobbies': ['movie', 'fashion']}
with open('data/data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

在本例中,如果data文件夹不存在,会先使用os.makedirs()函数创建data文件夹。然后使用open()函数打开data.json文件并写入数据。

六、Python写入JSON文件不识别中文

在Python写入JSON文件时,如果字符串中包含中文,可能会出现编码不正确的问题。这是因为JSON规范中,只支持Unicode编码,不支持其他编码。可以使用Python的unicode()函数将字符串转化为Unicode编码。以下是示例代码:

data = {'name': unicode('王五', 'utf-8'), 'age': 28, 'hobbies': ['basketball', 'fitness']}
with open('data.json', 'w') as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

在本例中,使用unicode()函数将字符串’王五’转化为Unicode编码,避免编码不正确的问题。

七、Python写入JSON数组并解析

在实际工作中,经常会遇到需要将多个数据以数组(列表)的形式写入JSON文件,或者从JSON文件读取数组数据并进行解析的情况。以下是写入JSON数组的示例代码:

import json

data = [{'name': 'Alice', 'age': 18}, {'name': 'Bob', 'age': 20}, {'name': 'Clare', 'age': 22}]
with open('data.json', 'w') as f:
    json.dump(data, f, indent=2)

在本例中,使用Python的列表数据类型存储多个字典数据,然后将其写入JSON文件中。可以使用json.load()函数从JSON文件中读取数据,并解析为Python对象。以下是解析JSON数组的示例代码:

with open('data.json', 'r') as f:
    data = json.load(f)
print(data[1]['name'])  # 输出 'Bob'

在本例中,使用json.load()函数从data.json文件中读取数据,将其解析为列表类型的Python对象。可以通过下标访问列表元素,或者使用循环遍历整个列表。

八、Python获取JSON中的某个值

在Python处理JSON数据时,经常需要获取JSON对象中的某个键值对。可以使用Python的字典操作符或者get()函数获取指定键的值。以下是示例代码:

import json

data = {'name':'David', 'age':30, 'hobby': 'reading'}
json_str = json.dumps(data)

# 使用Python的字典操作符获取键值对
print(data['age'])   # 输出 30

# 使用get()函数获取值
data_dict = json.loads(json_str)   # 将JSON字符串解析为Python对象
hobby = data_dict.get('hobby', 'No hobby!')   # 获取键'hobby'对应的值或者默认值'No hobby!'
print(hobby)   # 输出 'reading'

在本例中,使用Python的字典操作符或者get()函数获取键为’age’和’hobby’的值。另外,使用json.loads()函数将JSON字符串解析为Python对象。

原创文章,作者:BYUL,如若转载,请注明出处:https://www.506064.com/n/144143.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
BYULBYUL
上一篇 2024-10-24 15:27
下一篇 2024-10-24 15:27

相关推荐

  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29

发表回复

登录后才能评论