alchemyapi-recipes-twitter -Doesnot正常工作

时间:2015-04-17 12:09:05

标签: python twitter alchemyapi

代码的github链接如下:

https://github.com/AlchemyAPI/alchemyapi-recipes-twitter

运行recipe.py时出现以下错误:

Traceback (most recent call last):
  File "recipe.py", line 340, in <module>
    main(sys.argv[1], int(sys.argv[2]))
  File "recipe.py", line 43, in main
    print_results()
  File "recipe.py", line 303, in print_results
    avg_pos_score = mean_results['result'][2]['avgScore'] 
TypeError: 'CommandCursor' object has no attribute '__getitem__'

我使用的是python版本2.7.6 请帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

是的,我终于得到了正确的输出。感谢Games Brainiac帮助我弄明白。

    mean_results = list(tweets.aggregate([{"$group" : {"_id": "$sentiment",   

   "avgScore" : { "$avg" : "$score"}}}]))
    avg_pos_score = mean_results[1]['avgScore'] 
    avg_neg_score = mean_results[0]['avgScore']

mean_results将包含字典实体列表(在本例中为3个实体 - neg,pos,neutral)。 所以mean_results [0]指的是负面实体。    mean_results [1]指的是正实体。    等等。    mean_results [1] [&#39; avgScore] =正实体的平均得分。    等等...

答案 1 :(得分:1)

我认为您需要将第301行更改为304以反映API中的新更改。

首先,改变这一行:

mean_results = tweets.aggregate([{"$group" : {"_id": "$sentiment", "avgScore" : { "$avg" : "$score"}}}])

mean_results = list(tweets.agg....)

现在,您不再需要result使用CommandCursor

相反,你需要做的是:

list(mean_results[2]['avgScore'])

相反,也要重复下一行。只需删除result部分。