将多个json文件中的选择字段保存到新的json

时间:2014-07-26 14:57:53

标签: python json glob

我一直在尝试将从一些JSON文件中选择的3个字段保存到一个包含所有这些字段的新JSON文件中。我知道我非常接近,但我在下面提供的代码只保存了最后一个JSON文件中的字段(它可能会覆盖在最后一个之前保存的所有其他条目)。我的C式思维使我无法解决可能非常简单的问题。

理想情况下,如果我能够在每次迭代后立即将我们关注的3个字段抓取到一个名为output.json的新文件中以便不浪费内存但是存储它们然后将它们保存到文件中将会很棒。有什么想法吗?

import os
import glob
import json
import numpy
import csv
import pickle
import nltk
import math
from nltk.corpus import stopwords
from nltk import PorterStemmer

stop = stopwords.words('english')
stemmer=PorterStemmer()
dic = {}
final = []

for name in glob.glob('/Users/jorjis/Desktop/test/*'):
    jfile = open(name, 'r')
    values = json.load(jfile)
    jfile.close()
    data = values['article']['body']
    data = data.split('\n\n')
    desc = values['article']['description']
    title = values['article']['title']
    final.append(data)
    dic={'title': title, 'description': desc, 'paragraphs': data}

# get json string from that dictionary
json=json.dumps(dic)
print json

1 个答案:

答案 0 :(得分:1)

是的,你非常接近 - 你将变量data而不是dic添加到final列表,并仅将dic转换为json。检查下面代码段中的最后5行,注意更改。

import os
import glob
import json
import numpy
import csv
import pickle
import nltk
import math
from nltk.corpus import stopwords
from nltk import PorterStemmer

stop = stopwords.words('english')
stemmer=PorterStemmer()
dic = {}
final = []

for name in glob.glob('/Users/jorjis/Desktop/test/*'):
    with open(name, 'r') as jfile:
        values = json.load(jfile)
    data = values['article']['body'].split('\n\n')
    desc = values['article']['description']
    title = values['article']['title']
    dic={'title': title, 'description': desc, 'paragraphs': data}
    final.append(dic)

# get json string from that dictionary
jsondata = json.dumps(final)
print jsondata