加载Twitter搜索结果时出错

时间:2016-04-08 00:39:07

标签: python json twitter

这可能是一个愚蠢的问题,但我无法弄清楚我的生活 请原谅我令人困惑的变量命名。如果有人能告诉我为什么发生以下错误和/或任何其他错误,我会欣喜若狂。

  

JSON:错误期望属性名称第1行第2列(char 1)

import json
import twitter
a = twitter.get_account("@Suppert2")
q = "cxdffcfctftcvft"
ac = twitter.search(a,q, count=1, parameters=None)
abg = str(ac)
print (abg)
ah = json.loads(abg)  # here is where the error is occurring 
print ah["completed_in"] 

当您打印abg时,它会显示为:

{u'search_metadata': {u'count': 1, u'completed_in': 0.048, u'max_id_str': u'718234026394443782', u'since_id_str': u'0', u'refresh_url': u'?since_id=718234026394443782&q=x597567654dfv&include_entities=1', u'since_id': 0, u'query': u'x597567654dfv', u'max_id': 718234026394443782L}, u'statuses': []}

3 个答案:

答案 0 :(得分:3)

这里不需要加载JSON,twitter.search()首先返回一个Python字典,只需使用它:

ac = twitter.search(a,q, count=1, parameters=None)
print(ac["statuses"])
print(ac["search_metadata"]["completed_in"])

答案 1 :(得分:0)

这不是有效的JSON,您可以使用http://jsonlint.com进行验证。

答案 2 :(得分:0)

它看起来有点像JSON,但它不是JSON。

那些u前缀,L后缀和单引号的使用都使其成为无效的JSON。这就是为什么把它视为JSON失败(你可以通过尝试在http://jsonlint.com验证它而不是JSON,这总是一个很好的第一个调试步骤。)

此字符串实际上是您从str(ac)获得的Python字典的字符串表示形式,因为 Twitter API为您提供了一个Python字典(在ac中)。< / p>

所以直接使用ac,例如

print(ac["search_metadata"]["completed_in"])