2017-04-10 143 views
1

我有一个看起来像这样JSON文件:根据ID将JSON文件拆分为多个JSON文件?

{"one":"Some data", "two":"Some data",...} 

等等...

我想根据ID名称所有的ID拆分成单独的文件,例如:

one.json 
{"one":"Some data"} 
two.json 
{"two":"Some data"} 

等等。

我从this得到了参考。但是我的问题稍有不同。我可以修改什么来实现单独的文本文件?

+0

什么意思变量名称与密钥名称相同?你只是通过增加不必要的名字来加入名称空间 – abccd

+1

请不要使用python-2.7 *和* python-3.x进行标记,除非你有足够的理由这样做。 – timgeb

回答

3

我不会教你如何做文件I/O,并假设你自己可以做到这一点。

一旦你已经加载了原始文件作为与json模块dict,做

>>> org = {"one":"Some data", "two":"Some data"} 
>>> dicts = [{k:v} for k,v in org.items()] 
>>> dicts 
[{'two': 'Some data'}, {'one': 'Some data'}] 

,这将给你的词典列表,你可以转储到一个文件(或单独的文件中的密钥而得名), 如果你希望。

1

加载JSON文件后,您可以将它视为python中的字典,然后像在普通python字典中那样通过循环来保存文件中的内容。 这是关系到你想要获取JSON数据到一个变量后能达到

Data = {"one":"Some data", "two":"Some data"} 
for item in Data: 
    name = item + '.json' 
    file = open(name, 'w') 
    file.write('{"%s":"%s"}' % (item, Data[item])) 
    file.close() 
1

什么一个例子,做

a = {"one":"Some data", "two":"Some data"} 
for k,v in a.items(): 
    with open(k+".json","w") as f: 
     f.write('{"%s" : "%s"}' %(k,v)) 

和输出是:

one.json => {"one":"Some data"} 

two.json => {"two":"Some data"}