【问题标题】:Python API response - How to format/choose layout of reponsePython API 响应 - 如何格式化/选择响应布局
【发布时间】:2018-06-25 11:28:34
【问题描述】:

我已经使用 Python 大约 2 天了(我认为是 2.7),我正在努力使这里的 API 响应更具可读性,目前很难破译英文响应。

import json, requests

response = requests.get("http://data.dublinked.ie/cgi-
bin/rtpi/realtimebusinformation?stopid=1341&routeid=49&format=json")

data = response.json()

print data

响应是这样的,它非常难看:(我想 A)格式化它,使其更具可读性,可能是在列表或键:值对中? B) 如何从响应中只选择某些信息?

numberofresults: 2
timestamp: 16/01/2018 17:04:15
errormessage: 
results: [{u'origin': u'Tallaght', u'direction': u'Inbound',
u'destinationlocalized': u'Sr\xe1id an Phiarsaigh', u'monitored': u'true',         
u'departureduetime': u'6', u'route': u'49', u'additionalinformation': u'',         
u'destination': u'Pearse St', u'scheduleddeparturedatetime': u'16/01/2018 
17:09:00', u'scheduledarrivaldatetime': u'16/01/2018 17:09:00', 
u'sourcetimestamp': u'16/01/2018 17:01:53', u'operator': u'bac', 
u'departuredatetime': u'16/01/2018 17:10:56', u'arrivaldatetime': 
u'16/01/2018 17:10:56', u'lowfloorstatus': u'no', u'originlocalized':                                 
u'Tamhlacht', u'duetime': u'6'}, {u'origin': u'Tallaght', u'direction': 
u'Inbound', u'destinationlocalized': u'Sr\xe1id an Phiarsaigh', 
u'monitored': u'true', u'departureduetime': u'37', u'route': u'49', 
u'additionalinformation': u'', u'destination': u'Pearse St', 
u'scheduleddeparturedatetime': u'16/01/2018 17:42:00', 
u'scheduledarrivaldatetime': u'16/01/2018 17:42:00', u'sourcetimestamp': 
u'16/01/2018 16:43:44', u'operator': u'bac', u'departuredatetime': 
u'16/01/2018 17:42:13', u'arrivaldatetime': u'16/01/2018 17:42:13', 
u'lowfloorstatus': u'no', u'originlocalized': u'Tamhlacht', u'duetime': 
u'37'}]
errorcode: 0
stopid: 1341
[Finished in 0.7s]

我很可能在一个问题/答案上加倍,但我似乎找不到它!对不起。 另外,“u”我也看不懂。

提前谢谢大家了x

【问题讨论】:

  • 你为什么用python2.7?不会维护past 2020。
  • 响应已经在键:值对中。您有一个包含字典的列表。例如,尝试print(results[0]['destination'])。 u是python显示的一个表面标签,表示字符串是Unicode。
  • 'u' 代表 unicode 字符串。就像 rohan 所说,它可能在键值对中
  • 见this re:u 前缀。至于格式,很难说你想要什么。响应是一个平面字典,所以漂亮的打印可能只会给你一个列表,所以如果你想以更复杂的格式打印输出,你需要搜索 python 字符串格式。

标签: python json python-2.7 rest


【解决方案1】:

python 中的 json 库非常有用,尤其是在处理 JSON 对象时。我会专门看一下 json.dump 和 json.dumps 方法。如果你查看official documentation,json.dumps 返回一个字符串并接受一个分隔符参数和缩进参数。

import json, requests

response = requests.get("http://data.dublinked.ie/cgi-bin/rtpi/realtimebusinformation?stopid=1341&routeid=49&format=json")
print(json.dumps(response.json(), separators=(",",":"), indent=4)

如上所述,字符串前面的 u 表示 unicode 字符串,您现在可以放心地忽略它。

【讨论】:

  • 非常感谢
【解决方案2】:

“u”代表 unicode 字符串。返回类型是键值(字典)数据类型

import json, requests
import pprint

response = requests.get("http://data.dublinked.ie/cgi-bin/rtpi/realtimebusinformation?stopid=1341&routeid=49&format=json")
data = response.json()

pprint.pprint(data)  #Better view
print data['numberofresults']  #Key-Value

【讨论】:

  • 非常感谢您的帮助!
猜你喜欢
  • 2015-08-05
  • 2012-10-01
  • 2022-01-22
  • 2021-09-18
  • 2013-05-27
  • 2015-11-27
  • 2014-11-05
  • 2012-05-31
  • 1970-01-01
相关资源
最近更新 更多