【问题标题】:Third Party API Integration in Python / DjangoPython / Django 中的第三方 API 集成
【发布时间】:2017-02-04 07:07:14
【问题描述】:
import requests
r = requests.get('some url')
data = r.text

{"NumberOfPassedStudents":"21061","TotalAttendedCandidates":"74494","NumberOfEnrolledStudents":"84308"}

我得到的上述输出看起来像 dictionary 但它不是 dictionary 它是 Unicode 。我的问题是我想以下面提到的方式获得输出

通过学生人数:21061
参加者总数 : 74494
招生人数:84308

python 2.7 中将这些 Unicode 转换为我想要的上述输出的代码是什么。

【问题讨论】:

    标签: python django python-2.7 django-1.5


    【解决方案1】:

    当您的内容类型为application/json 时,您可以使用内置的json() 方法将您的HTTP 响应数据转换为python dict

    >>> r = requests.get('https://someurl.com')
    >>> r.text
    u'{"type":"User"...'
    >>> r.headers['content-type']
    'application/json; charset=utf8'
    >>> result = r.json()
    >>> result
    {u'private_gists': 419, u'total_private_repos': 77, ...}
    

    如果你有其他内容类型,可以使用json模块将返回字符串/unicode转换成pythondict

    import json, requests
    
    r = requests.get('some url')
    result = json.loads(r.text)
    

    然后您可以通过将结果视为dict 来获得所需的输出

    print 'Number of Passed Students : %s' % result['NumberOfPassedStudents']
    print 'Total Attended Candidates : %s' % result['TotalAttendedCandidates']
    print 'Number of Enrolled Students : %s' % result['NumberOfEnrolledStudents']
    

    【讨论】:

      【解决方案2】:
      import re
      data={"NumberOfPassedStudents":"21061","TotalAttendedCandidates":"74494","NumberOfEnrolledStudents":"84308"}
      for k,v in data.iteritems():
          print re.sub(r"(\w)([A-Z])", r"\1 \2",k) +" : "+ v
      

      输出

      Number Of Passed Students : 21061
      Total Attended Candidates : 74494
      Number Of Enrolled Students : 84308
      

      【讨论】:

      • 我的输出看起来像字典,但它是一个 unicode。
      • 使用 json.loads() 将 unicode 对象转换为 json,然后处理字典
      • 从字典中获取键,并从键字符串中找到出现的大写字母,并将其视为单词开头,然后添加空格。
      【解决方案3】:

      要遍历字典的键值,您应该使用items() 方法:

      my_dict = {'a':'foo', 'b':'bar'}
      for key, value in my_dict.iteritems():
           print key, value
      

      这个打印出来

      a foo
      b bar
      

      对于 CamelCase 的拆分,请转到 this answer

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-15
        相关资源
        最近更新 更多