无法打印Stocktwits字典

时间:2016-12-06 20:35:16

标签: python json dictionary

我正在学习从Stocktwit的API获取数据,目前正在探索API的数据。我执行了以下代码来提取有关Apple股票的最新30条推文的信息:

import requests

a=requests.get('https://api.stocktwits.com/api/2/streams/symbol/AAPL.json')
a=a.json()
print(a.keys())
>> dict_keys(['cursor', 'messages', 'response', 'symbol'])

我可以看到Apple的股票字典中有四个键。但是我没有看到情绪的关键,这基本上就是我要找的:关键字"看涨"多少次?出现?这个词有多少次看跌"看跌"出现?

如果我直接从浏览器手动输入link,我可以手动查看多少次"看跌"并且"看涨"关键字出现在Apple的股票上。我怎么能用Python 3.5做到这一点?

编辑:我甚至尝试按照this的建议在字典键中查找我的关键字 帖子。

for bearish in a.keys():
print ("the key name is" + bearish + "and its value is" + a[bearish])
>> TypeError: Can't convert 'dict' object to str implicitly

3 个答案:

答案 0 :(得分:1)

sentiment隐藏在messages

from collections import Counter
sentiment_dict = Counter()
for message in a['messages']:
    if 'entities' in message:
        if 'sentiment' in message['entities']:
            sentiment = message['entities']['sentiment']
            if sentiment is not None:
                sentiment = sentiment['basic']
                sentiment_dict[sentiment] += 1
for key, value in sentiment_dict.items():
    print "%s: %s" % (key, value)

<强>输出

Bearish: 4
Bullish: 8

我使用了Counter,这是dict的特化,用于计算情绪的频率。

注意

对于试图在JSON中查找字段的其他人,我建议

import json
print json.dumps(a, indent=4)

答案 1 :(得分:0)

看起来a[bearish]可能是另一本字典。 print()会自动插入空格,所以为什么不将print语句更改为

print ("the key name is", bearish, "and its value is", a[bearish])

这样可以更容易地调试这里发生的事情。

答案 2 :(得分:0)

您应该使用format()代替+来解决您的问题。

请查看以下内容以了解format()的作用:

>>> my_dict = {'a': {'aa': 10}, 'b': {'bb': 20}}
>>>
>>> for key in my_dict.keys():
...     print "key :" + key + " and value: " + my_dict[key]
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
TypeError: cannot concatenate 'str' and 'dict' objects
>>>
>>> for key in my_dict.keys():
...     print "key : {} and value: {}".format(key, my_dict[key])
...
key : a and value: {'aa': 10}
key : b and value: {'bb': 20}