2014-12-05 6 views
1

Я запрашиваю данные Google+ с TF-IDF и сохраняю данные как файл JSON. Во время работы с этим файлом я получаю сообщение об ошибке.python-TypeError: строковые индексы должны быть целыми числами. Как исправить?

Код

import json 
import nltk 

DATA = 'C:/Users/Dung Ring/Desktop/kpdl/107033731246200681024.json' 
data = json.loads(open(DATA).read()) 

QUERY_TERMS = ['SOPA'] 

activities = [activity['object']['content'].lower().split() \ 
      for activity in data \ 
      if activity['object']['content'] != " "] 

# TextCollection provides tf, idf, and tf_idf abstractions so 
# that we don't have to maintain/compute them ourselves 

tc = nltk.TextCollection(activities) 

relevant_activities = [] 

for idx in range(len(activities)): 
    score = 0 
    for term in [t.lower() for t in QUERY_TERMS]: 
     score += tc.tf_idf(term, activities[idx]) 
    if score > 0: 
     relevant_activities.append({'score': score, 'title': data[idx]['title'], 
          'url': data[idx]['url']}) 

# Sort by score and display results 

relevant_activities = sorted(relevant_activities, key=lambda p: p['score'], reverse=True) 
for activity in relevant_activities: 
     print activity['title'] 
     print '\tLink: %s' % (activity['url'],) 
     print '\tScore: %s' % (activity['score'],) 
     print 

Сообщение об ошибке

Traceback (most recent call last): 
    File "ex9.py", line 11, in <module> 
    if activity['object']['content']!= ""] 
TypeError: string indices must be integers 

Я использую Python 2.7.

+1

Если вам нужно что-то более конкретное, чем мой ответ, вам нужно предоставить нам и пример вашего json-файла. – LeartS

+0

Должны ли мы догадываться, каковы ваши данные? Единственным очевидным моментом является то, что либо 'activity', либо' activity ['object'] 'является строкой. –

+0

это мой json-файл. Ссылка: https://www.dropbox.com/s/rl72mwmi4rifqjq/107033731246200681024.json?dl=0 –

ответ

0

Либо activity, либо activity['object'] - это строка, а не словарь, как вы ожидаете. Распечатайте data и проверьте.

Смежные вопросы