Python标准库学习json模块处理数据和文件实践

2023-07-0511:43:34编程语言入门到精通Comments838 views字数 4845阅读模式

简介 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

JSONJavaScript Object Notation)是一种轻量级的数据交换格式,它已经成为了现代Web应用程序中最常用的数据格式之一。 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

Python中,我们可以使用内置的json模块来处理JSON格式的文件,`json`Python3标准库中用于处理JSON数据格式的模块。其中,`json.dumps()``json.loads()`函数是处理JSON数据的主要方法。在本文中,将讨论`json`的特性和作用、常用的方法以及代码示例,以及相关的应用场景。还了介绍如何使用Python处理JSON格式的文件。 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

应用场景 

`json`模块的应用场景涉及到Python应用程序中与Web API交互时的数据传输和处理方面,具体应用场景包括: 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

  • 在网页程序中进行AJAX的数据传输。
  • 在Web API中传输数据。
  • 在Python应用程序中读取和处理由其他应用程序输出的JSON数据。

特性和作用 

`json`模块主要有以下几个特点: 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

  • 支持序列化和反序列化JSON数据。
  • 支持Python内置数据类型和自定义数据类型的JSON编码和解码。
  • 支持可选的缩进功能。
  • 支持ASCII编码和UTF-8编码。

总之,主要的作用是在Python应用中处理JSON格式的数据,例如处理来自Web APIJSON格式数据。json模块提供了JSON格式的支持,可以将Python对象转换为JSON格式的数据,或者将JSON格式的数据转换为Python对象。json模块中的函数可以让Python程序进行高效的数据存储和传输,实现各种数据操作。也可以用来对json文件的处理。 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

1.   读取JSON文件-从文件中反序列化Python对象 

Python中,我们可以使用json模块的load()函数来读取JSON格式的文件。load()函数将JSON格式的字符串转换为Python对象。下面是一个读取JSON文件的示例代码:
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

import json
# 读取JSON文件with open('data.json', 'r') as f:    # 从文件中加载JSON格式的数据并反序列化为Python对象    data = json.load(f)
# 打印读取的数据 输出Python对象print(data)

上面的代码中,我们使用了Pythonwith语句来打开文件并自动关闭文件,从文件`data.json`中加载JSON格式的数据。json.load()函数将JSON格式的文件读取并反序列化为Python对象到data中。最后,我们打印读取的数据。 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

2. 写入JSON文件-将Python对象序列化到文件中 

Python中,我们可以使用json模块的dump()函数将Python对象转换为JSON格式的字符串,并将其写入到文件中。下面是一个写入JSON文件的示例代码:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

示例1:基本序列化文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

import json
# 定义一个Python字典data = {    "name": "John",    "age": 30,    "city": "New York"}
# 将Python字典写入JSON文件with open('data.json', 'w') as f:    json.dump(data, f)
print("写入完成")

上面的代码中,我们定义了一个Python字典data,然后使用json.dump()函数将Python对象序列化为JSON字符串其写入到JSON文件中。最后,我们打印出写入完成 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

示例2:其他的Python类型序列化文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

data = {    'name': 'Mike',    'age': 18,    'is_student': True,    'grades_list': [80, 85, 90],    'scores_dict': {        'math': 85,        'physics': 90,        'biology': 93    }}
# 序列化Python对象并写入文件with open('data.json', 'w') as f:    json.dump(data, f, indent=4)

上述代码将Python对象`data`序列化为JSON格式的字符串,并写入到文件`data.json`中。其中`json.dump()`函数将Python对象序列化为JSON字符串,`indent`参数是缩进的数量。 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

3. 处理JSON数据-从JSON格式的字符串反序列化为Python对象 

Python中,我们可以使用json模块将JSON格式的字符串转换为Python对象。下面是一个处理JSON数据的示例代码:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

示例1:格式化基本字典文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

import json 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

定义一个JSON字符串文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

json_str = '{"name": "steverocket", "age": 25, "city": "New York"}' 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

JSON字符串转换为Python对象文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

data = json.loads(json_str) 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

打印Python对象文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

print(data) # {'name': 'steverocket', 'age': 25, 'city': 'New York'} 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

访问Python对象的属性文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

print(data['name']) # steverocket文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

print(data['age']) # 25文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

print(data['city']) # New York文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

上面的代码中,我们定义了一个JSON字符串json_str,然后使用json.loads()函数将其转换为Python对象data。最后,我们可以访问Python对象的属性,例如data['name']data['age']data['city'] 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

示例2:格式化docstring嵌套类型文档文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

json_data = '''{    "name": "Mike",    "age": 18,    "is_student": true,    "grades_list": [80, 85, 90],    "scores_dict": {        "math": 85,        "physics": 90,        "biology": 93    }}'''
# 将JSON格式的字符串转化为Python对象data = json.loads(json_data)
# 输出Python对象print(type(data), data) # <class 'dict'>

上述代码将一个JSON字符串`json_data`反序列化为Python对象。其中`json.loads()`函数将JSON字符串转化为Python对象。 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

4. 格式化JSON数据-将Python对象序列化为JSON格式 

Python中,我们可以使用json模块的dumps()函数将Python对象转换为JSON格式的字符串,并格式化输出。下面是一个格式化JSON数据的示例代码: 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

示例1:基本格式化输出 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

import json
# 定义一个Python字典data = {    "name": "steverocket02",    "age": 26,    "city": "New York"}
# 将Python字典转换为JSON格式的字符串,并格式化输出json_str = json.dumps(data, indent=4)
# 打印JSON格式的字符串print(json_str)# 输出# {#     "name": "steverocket02",#     "age": 26,#     "city": "New York"# }

上面的代码中,我们使用json.dumps()函数将Python字典data转换为JSON格式的字符串,并使用indent参数指定缩进量。最后,我们打印格式化后的JSON字符串。 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

示例2sort_keys参数的使用文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

data = {    'name': 'Mike',    'age': 18,    'is_student': True,    'grades_list': [80, 85, 90],    'scores_dict': {        'math': 85,        'physics': 90,        'biology': 93    }}
# 将Python对象转化为JSON格式的字符串json_data = json.dumps(data, indent=4, sort_keys=True)
# 输出JSON格式的字符串print(json_data)

上述代码将一个Python字典对象`data`序列化为JSON字符串。其中`indent`参数是缩进的数量,`sort_keys`参数用于控制输出键值对的顺序。 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

json文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

{    "age": 18,    "grades_list": [        80,        85,        90    ],    "is_student": true,    "name": "Mike",    "scores_dict": {        "biology": 93,        "math": 85,        "physics": 90    }}

5. 文件读取写入带中文案例

import json, time
infos = {"_id": "description", "name": "python", "filename": "中文", "os": ["abcd", "hello", "www"], "blog": WEIXIN_URL}infos["time"] = time.time()  # 动态修改json文件内容
# 生成json文件def write_json_file(file_name, infos):    with open(file_name, "w") as jsonf:        jsonf.write(json.dumps(infos))
def read_json_file(file_name):    # 读取json文件的内容    with open(file_name, 'r') as jsonf:        file_info = json.load(jsonf)        print(file_info, type(file_info))
        filename = file_info["filename"]        print(filename)
        infos = json.dumps(file_info, sort_keys=True, indent=4)        print(infos, type(infos))
if __name__ == '__main__':    file_name = "desc.json"    write_json_file(file_name, infos)    read_json_file(file_name)

生成的文件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

Python标准库学习json模块处理数据和文件实践文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

输出内容:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

{'_id': 'description', 'name': 'python', 'filename': '中文', 'os': ['abcd', 'hello', 'www'], 'blog': 'https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q', 'time': 1684482364.7974849} <class 'dict'>中文{    "_id": "description",    "blog": "https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q",    "filename": "\u4e2d\u6587",    "name": "python",    "os": [        "abcd",        "hello",        "www"    ],    "time": 1684482364.7974849} <class 'str'>

总结 

Python中,我们可以使用json模块来处理JSON格式的文件。我们可以使用json.load()函数读取JSON文件,使用json.dump()函数将Python对象写入JSON文件。我们还可以使用json.loads()函数将JSON格式的字符串转换为Python对象,使用json.dumps()函数将Python对象转换为JSON格式的字符串,并格式化输出。掌握这些技巧可以使我们更好地处理JSON格式的数据。 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

总之,`json`模块是处理Python里的JSON格式数据的重要模块,它的作用是将程序中的数据格式转换为其他应用程序可以使用的格式,并在数据传输过程中对数据进行编码、解码等处理,大大方便了数据的传输和处理,提高了应用程序的效率。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/50134.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/50134.html

Comment

匿名网友 填写信息

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

确定