• 【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文件。

    1. # xml文件
    2. "23/04/2022">
    3. tom
    4. <from>maryfrom>
    5. love
    6. # 转换
    7. import json
    8. import xmltodict
    9. def xml_to_json(xml_str):
    10. """parse是的xml解析器,参数需要
    11. :param xml_str: xml字符串
    12. :return: json字符串
    13. """
    14. xml_parse = xmltodict.parse(xml_str)
    15. # json库dumps()是将dict转化成json格式,loads()是将json转化成dict格式。
    16. # dumps()方法的ident=1,格式化json
    17. json_str = json.dumps(xml_parse, indent=1)
    18. return json_str
    19. XML_PATH = './1.xml' # xml文件的路径
    20. with open(XML_PATH, 'r') as f:
    21. xmlfile = f.read()
    22. with open(XML_PATH[:-3] + 'json', 'w') as newfile:
    23. newfile.write(xml_to_json(xmlfile))

    1.2 JSON文件转为XML文件

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

    1. # json文件
    2. {
    3. "student": {
    4. "course": {
    5. "name": "math",
    6. "score": "90"
    7. },
    8. "info": {
    9. "sex": "male",
    10. "name": "name"
    11. },
    12. "stid": "10213"
    13. }
    14. }
    15. # 转换
    16. import xmltodict
    17. import json
    18. def json_to_xml(python_dict):
    19. """xmltodict库的unparse()json转xml
    20. :param python_dict: python的字典对象
    21. :return: xml字符串
    22. """
    23. xml_str = xmltodict.unparse(python_dict)
    24. return xml_str
    25. JSON_PATH = './test.json' # json文件的路径
    26. with open(JSON_PATH, 'r') as f:
    27. jsonfile = f.read()
    28. python_dict = json.loads(jsonfile) # 将json字符串转换为python字典对象
    29. with open(JSON_PATH[:-4] + 'xml', 'w') as newfile:
    30. newfile.write(json_to_xml(python_dict))

    2、解析json文件

    2.1 解析json字符串

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

    1. # 解析
    2. import json
    3. json_str = '{"name":"test", "type":{"name":"seq", "parameter":["1", "2"]}}'
    4. print(json_str)
    5. print(type(json_str))
    6. print('-' * 20)
    7. # 1、JSON文件转换为Python对象
    8. python_obj = json.loads(json_str)
    9. print(python_obj)
    10. print(type(python_obj))
    11. print('-' * 20)
    12. # 2、定位具体的数据节点
    13. print(python_obj.keys())
    14. print(python_obj.values())
    15. print(python_obj["name"])
    16. print(python_obj["type"]["name"])
    17. print(python_obj["type"]["parameter"][0])
    18. print(python_obj["type"]["parameter"][1])
    19. #输出
    20. {"name":"test", "type":{"name":"seq", "parameter":["1", "2"]}}
    21. <class 'str'>
    22. --------------------
    23. {'name': 'test', 'type': {'name': 'seq', 'parameter': ['1', '2']}}
    24. <class 'dict'>
    25. --------------------
    26. dict_keys(['name', 'type'])
    27. dict_values(['test', {'name': 'seq', 'parameter': ['1', '2']}])
    28. test
    29. seq
    30. 1
    31. 2

    2.2 解析json文件

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

    1. # json文件
    2. {
    3. "student": {
    4. "course": {
    5. "name": "math",
    6. "score": "90"
    7. },
    8. "info": {
    9. "sex": "male",
    10. "name": "name"
    11. },
    12. "stid": "10213"
    13. }
    14. }
    15. # 解析
    16. import json
    17. # 1、JSON文件转换为Python对象
    18. python_obj = json.load(open('test.json', 'r'))
    19. print(python_obj)
    20. print(type(python_obj))
    21. print("-" * 20)
    22. # 2、解析json文件
    23. # 输出cours节点e下的数据
    24. print(python_obj['student']['course']['name']) # 输出name
    25. print(python_obj['student']['course']['score']) # 输出score
    26. # 输出info节点下的数据
    27. print(python_obj['student']['info']['sex']) # 输出sex
    28. print(python_obj['student']['info']['name']) # 输出name
    29. # 输出stid节点下的数据
    30. print(python_obj['student']['stid']) # 输出stid
    31. # 输出
    32. {'student': {'course': {'name': 'math', 'score': '90'}, 'info': {'sex': 'male', 'name': 'name'}, 'stid': '10213'}}
    33. <class 'dict'>
    34. --------------------
    35. math
    36. 90
    37. male
    38. name
    39. 10213

    学习遇到的问题

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

    学习的收获

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

    实操

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

  • 相关阅读:
    ios-关联对象
    vue使用swiper轮播组件开启loop模式点击不了问题处理
    Web 操作技巧有哪些
    微信小程序(一)
    面试题: 线程池的核心参数
    容灾演练月报 | 雅安市商业银行四大业务系统完成容灾切换演练
    C++学习笔记02-面向对象及类的引入
    工作上的三个境界:能做,能做好,能持续做好
    应用在摄像头对焦镜头中的马达驱动芯片
    将 Python 与 RStudio IDE 配合使用(R与Python系列第一篇)
  • 原文地址:https://blog.csdn.net/yxz8102/article/details/126164881