这可能是一个愚蠢的问题,但我无法弄清楚我的生活 请原谅我令人困惑的变量命名。如果有人能告诉我为什么发生以下错误和/或任何其他错误,我会欣喜若狂。
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': []}
答案 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"])