【问题标题】:Error when loading Twitter search results加载 Twitter 搜索结果时出错
【发布时间】:2016-07-29 03:04:15
【问题描述】:

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

JSON:错误的属性名称第 1 行第 2 列(字符 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': []}

【问题讨论】:

    标签: python json twitter


    【解决方案1】:

    这不是一个有效的 JSON,你可以使用http://jsonlint.com 来验证它。

    【讨论】:

    • 是的,这是有效的:{ "search_metadata": { "count": 1, "completed_in": 0.048 } }
    • 为什么我的 cmets 被删除了??
    【解决方案2】:

    这里不需要加载JSON,twitter.search()一开始就给你返回了一个Python字典,直接用就行了:

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

    【讨论】:

    • 这里不仅“不需要”加载 JSON;您无法在此处加载 JSON。因为它不是 JSON。
    • :0 哦,天哪,我是个白痴,我想太多了,非常感谢你,伙计
    【解决方案3】:

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

    那些u 前缀、L 后缀和单引号的使用都使它无效的JSON。这就是为什么将其视为 JSON 会失败(您可以通过尝试在 http://jsonlint.com 对其进行验证来发现它不是 JSON,这始终是一个很好的调试步骤)。

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

    所以直接使用ac,例如

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 2010-12-26
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 1970-01-01
      相关资源
      最近更新 更多