我是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
答案 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})