我在解析较小的json文件时遇到了一个问题,下面是到目前为止的代码。。。在
import json
import pathlib
from pprint import pprint
import xmltodict
from yattag import indent
pathlib.Path('x:/xx/xx/AppData/Local/Programs/Python/Python36-32/example').mkdir(parents=True, exist_ok=True)
with open("text.xml", 'rb') as f:
xmlString = f.read()
jsonString = json.dumps(xmltodict.parse(xmlString), indent=4)
with open("x:/xxxx/xx/AppData/Local/Programs/Python/Python36-32/example/data.json", 'w') as f:
f.write(jsonString)
a = json.load(open('x:/xxxx/xx/AppData/Local/Programs/Python/Python36-32/example/data.json'))
for k, v in a.items():
with open("x:/xxxx/xx/AppData/Local/Programs/Python/Python36-32/example/" + k + ".json", "w",
encoding='utf-16') as p:
p.write('{"%s" : "%s"}' % (k, v))
原来的json文件是从xml格式转换过来的,然后我的想法是根据数据把json文件拆分成几个更小的json文件,但是它只创建一个json文件“widgets”包含所有的json文件,我想知道有没有办法修改这个文件,并用“widgets”类(“text”,“图像”,“窗口”)。我使用的是python3.x。如果有任何帮助,我将不胜感激
以下是json文件:
^{pr2}$
您的顶级JSON dict有一个单独的键值对
widgets
,它本身就是一个具有单个键值对的dict,widget
,它是一个包含单个对象的列表,最后,它包含了您实际想要的对象。在如果您打印得很好,则更容易看到:
显然,迭代}设置为小部件dict
for k, v in a.items():
只循环一次,将k
设置为widgets
,并将{如果要循环该列表中的所有元素,则需要显式执行此操作:
^{pr2}$或者,有一些标准可以更直接地搜索JSON(JSONPath,一个我忘记名字的更简单的标准,一个基于CSS选择器、Apple的KVC等等)的标准,以及PyPI上所有这些标准的库。其中一个libs可以让你做类似的事情:
…如果稍后在列表中找到包含多个内容的示例,则可以简单地将其更改为:
然而,我不知道这些标准或库,好吧,你必须自己做研究,选择一个适合你的。在
您可以使用Json库将Json文件作为数据帧读取,这将使您的生活更加轻松。然后可以使用转储创建自己的json。在
相关问题 更多 >
编程相关推荐