从.json文件中获取特定数据,并将它们保存到python中的2D矩阵/字典中

时间:2014-07-18 20:12:05

标签: python arrays json dictionary processing

我是python的新手,我一直在尝试在文件夹中的各种.json文件上做一些NLP。我已经设法使用密钥获取并单独打印字典中的每个条目,该密钥是文章获取描述值。事情是每次循环执行时我将新数据值保存到同一个变量body1。我发现由于某种原因特别难以做到的是将每个数据条目(每篇文章描述)保存在二维矩阵或字典表中(如果您为了能够将所有条目存储在那里以供将来使用)。类似的东西:

body1 = [' file_name',' description',          ' file_name',' description',          ' file_name',' description'] 因此,如果我需要,我将能够使用body1 [name] [description]打印第二个文件的描述。现在,在每次迭代中,最后一次迭代的数据都会丢失。我认为我的C配置思考现在让我看到答案。我很感激任何想法。

提前谢谢你, 乔治

   import os
   import glob
   import json
   import nltk
   from nltk.corpus import stopwords
   from nltk import PorterStemmer

   stop = stopwords.words('english')
   stemmer=PorterStemmer()

   for name in glob.glob('/Users/jorjis/Desktop/test/*'):
     jfile = open(name, 'r')
     values = json.load(jfile)
     jfile.close()
     body1 = values['article']['description']
     tokens = nltk.wordpunct_tokenize(body1)
     tokens = [w.lower() for w in tokens]
     vocab = [word for word in tokens if word not in stop]
     print body1

1 个答案:

答案 0 :(得分:1)

您需要在循环外部停止列表并附加值。

final = [] # add values you want saved to final
uniq_ident = 1
for name in glob.glob('/Users/jorjis/Desktop/test/*'):
     jfile = open(name, 'r')
     values = json.load(jfile)
     jfile.close()
     body1 = values['article']['description']
     tokens = nltk.wordpunct_tokenize(body1)
     tokens = [w.lower() for w in tokens]
     vocab = [word for word in tokens if word not in stop]
     final.append([uniq_ident,vocab]) # append vocab or whatever values you want to keep
     uniq_ident += 1
     print body1

您还可以使用final = {}使用make final dict并使用final[uniq_ident] = vocab

如果您想保留最终列表并在每次使用时附加一个词典:

 final.append({uniq_ident:vocab})