【21天Python进阶学习挑战赛】[day4]json标准库大总结


活动地址:CSDN21天学习挑战赛

学习日记

学习知识点

XML文件和JSON文件互转、解析json文件:100天精通Python(进阶篇)——第35天:json标准库大总结_无 羡ღ的博客-CSDN博客

1、XML文件和JSON文件互转

【前置条件】cmd控制台安装第三方模块:pip install xmltodict

1.1 XML文件转为JSON文件

思路:获取到XML文件,读取文件的内容(字符串),将内容转换为JSON格式,输出JSON文件。

# xml文件
<note date="23/04/2022">
	<to>tom</to>
	<from>mary</from>
	<msg>love</msg>
</note>

# 转换
import json
import xmltodict


def xml_to_json(xml_str):
    """parse是的xml解析器,参数需要

    :param xml_str: xml字符串
    :return: json字符串
    """
    xml_parse = xmltodict.parse(xml_str)
    # json库dumps()是将dict转化成json格式,loads()是将json转化成dict格式。
    # dumps()方法的ident=1,格式化json
    json_str = json.dumps(xml_parse, indent=1)
    return json_str


XML_PATH = './1.xml'  # xml文件的路径
with open(XML_PATH, 'r') as f:
    xmlfile = f.read()
    with open(XML_PATH[:-3] + 'json', 'w') as newfile:
        newfile.write(xml_to_json(xmlfile))

1.2 JSON文件转为XML文件

思路:获取到JSON文件,读取文件的内容(转换为python内置对象),将内容转换为XML格式,输出XML文件。

# json文件
{
  "student": {
    "course": {
      "name": "math",
      "score": "90"
    },
    "info": {
      "sex": "male",
      "name": "name"
    },
    "stid": "10213"
  }
}

# 转换
import xmltodict
import json


def json_to_xml(python_dict):
    """xmltodict库的unparse()json转xml

    :param python_dict: python的字典对象
    :return: xml字符串
    """
    xml_str = xmltodict.unparse(python_dict)
    return xml_str


JSON_PATH = './test.json'  # json文件的路径
with open(JSON_PATH, 'r') as f:
    jsonfile = f.read()
    python_dict = json.loads(jsonfile)  # 将json字符串转换为python字典对象
    with open(JSON_PATH[:-4] + 'xml', 'w') as newfile:
        newfile.write(json_to_xml(python_dict))

2、解析json文件

2.1 解析json字符串

思路:将json字符串转换为python内置对象,定位具体的数据节点

# 解析
import json

json_str = '{"name":"test", "type":{"name":"seq", "parameter":["1", "2"]}}'
print(json_str)
print(type(json_str))
print('-' * 20)

# 1、JSON文件转换为Python对象
python_obj = json.loads(json_str)
print(python_obj)
print(type(python_obj))
print('-' * 20)

# 2、定位具体的数据节点
print(python_obj.keys())
print(python_obj.values())
print(python_obj["name"])
print(python_obj["type"]["name"])
print(python_obj["type"]["parameter"][0])
print(python_obj["type"]["parameter"][1])

#输出
{"name":"test", "type":{"name":"seq", "parameter":["1", "2"]}}
<class 'str'>
--------------------
{'name': 'test', 'type': {'name': 'seq', 'parameter': ['1', '2']}}
<class 'dict'>
--------------------
dict_keys(['name', 'type'])
dict_values(['test', {'name': 'seq', 'parameter': ['1', '2']}])
test
seq
1
2

2.2 解析json文件

思路:读取json文件(转换为python内置对象),定位具体的数据节点

# json文件
{
  "student": {
    "course": {
      "name": "math",
      "score": "90"
    },
    "info": {
      "sex": "male",
      "name": "name"
    },
    "stid": "10213"
  }
}

# 解析
import json

# 1、JSON文件转换为Python对象
python_obj = json.load(open('test.json', 'r'))
print(python_obj)
print(type(python_obj))

print("-" * 20)
# 2、解析json文件

# 输出cours节点e下的数据
print(python_obj['student']['course']['name'])  # 输出name
print(python_obj['student']['course']['score'])  # 输出score

# 输出info节点下的数据
print(python_obj['student']['info']['sex'])  # 输出sex
print(python_obj['student']['info']['name'])  # 输出name

# 输出stid节点下的数据
print(python_obj['student']['stid'])  # 输出stid

# 输出
{'student': {'course': {'name': 'math', 'score': '90'}, 'info': {'sex': 'male', 'name': 'name'}, 'stid': '10213'}}
<class 'dict'>
--------------------
math
90
male
name
10213

学习遇到的问题

最大的问题就是,看过了就当作会了,其实不然。很多时候都是这样眼高手低,实践出真知,动手才是硬道理。还是要尽快把本地环境搭好,把代码跑跑看。

学习的收获

了解到json相关文件的处理方法,包含XML文件和JSON文件互转以及JSON文件的解析。

实操

暂无,本周找时间把本地环境​搭一下,跑跑看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值