活动地址:CSDN21天学习挑战赛
XML文件和JSON文件互转、解析json文件:100天精通Python(进阶篇)——第35天:json标准库大总结_无 羡ღ的博客-CSDN博客
【前置条件】cmd控制台安装第三方模块:pip install xmltodict
1.1 XML文件转为JSON文件
思路:获取到XML文件,读取文件的内容(字符串),将内容转换为JSON格式,输出JSON文件。
- # xml文件
"23/04/2022"> -
tom - <from>maryfrom>
-
love -
- # 转换
- 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.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文件的解析。
暂无,本周找时间把本地环境搭一下,跑跑看。