【问题标题】:how to get urllib2 to return data as an array如何让 urllib2 以数组形式返回数据
【发布时间】:2014-05-01 20:42:03
【问题描述】:

不确定这是否可能,但如果可以,那就太棒了。

我的代码是:

url = "https://*myDomain*.zendesk.com/api/v2/organizations/*{id}*/tags.json"
req = urllib2.request(url)
password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_manager.add_password(None, url, 'example@domain.com', 'password')
auth_manager = urllib2.HTTPBasicAuthHandler(password_manager)
opener = urllib2.build_opener(auth_manager)
urllib2.install_opener(opener)
response = urllib2.urlopen(req)
tagsA = response.read()
print tagsA

现在返回的数据是:

{"tags":[]}

API 调用本身返回以下内容

{
tags: []
}

但是尝试访问该列表不起作用,因为它似乎将 tagsA 视为字符串。我希望它把它当作一个列表,这样我就可以检查“标签”是否为空。

任何帮助将不胜感激!!!

【问题讨论】:

    标签: python json string list urllib2


    【解决方案1】:

    您需要通过json.loads()将json字符串加载到python字典中:

    import json
    
    ...
    
    tagsA = json.loads(response.read())
    print tagsA['tags']
    

    或者,将response 传递给json.load()(感谢@J.F. Sebastian 的评论):

    tagsA = json.load(response)
    print tagsA['tags']
    

    【讨论】:

    • json.load(response)。两者都假设字符编码是 utf-8
    【解决方案2】:

    您需要json.load(或json.loads)响应正文。

    但是,如果您要在 Python 中执行任何类型的半复杂 HTTP 调用(身份验证、cookie 等),那么您应该使用 Kenneth Reitz 出色的 Requests 库 (http://python-requests.org/) 而不是 urllib 调用.您的整个代码将变为:

    import requests
    response = requests.get(url, auth=("my_username", "my_password"))
    tagsA = response.json()
    

    【讨论】:

      猜你喜欢
      • 2017-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多