将Json输出转换为好看的文本?

时间:2018-01-12 14:59:22

标签: python json file text

我正在尝试从网站检索数据: https://api.coinmarketcap.com/v1/ticker/cardano/?convert=usd

代码段如下所示:

with urllib.request.urlopen("https://api.coinmarketcap.com/v1/ticker/cardano/?convert=USD") as url:
data = json.loads(url.read().decode())
print(data)

输出结果为:

[{'id':'cardano','name':'Cardano','symbol':'ADA','rank':'5','price_usd':'0.81872','price_btc':' 0.00005809','24h_volume_usd':'213316000.0','market_cap_usd':'21227011191.0','available_supply':'25927070538.0','total_supply':'31112483745.0','max_supply':'45000000000.0','percent_change_1h':'0.19' ,'percent_change_24h':'13 .13','percent_change_7d':' - 19.93','last_updated':'1515768856'}]

我的问题是,我该如何使用该文字?我可以把它变成一个更好看的清单吗?

提前致谢。

P.S。:我现在正在使用Python

3 个答案:

答案 0 :(得分:2)

要获取price_usd元素,您可以使用data[0]['price_usd']

您可以使用pprint模块以更好的格式打印它。

答案 1 :(得分:1)

您可以使用以下内容:

print(json.dumps(data, indent=4))

这将打破一个更容易阅读的拉动视图。但我不确定这会让您更容易使用脚本中的信息。 pprint是另一个很棒的模块。

答案 2 :(得分:-1)

我非常建议使用requests库来执行此类操作。它具有灵活性,是一种事实上可以用来做任务的东西。

例如(我冒昧地使用这样的lib和iPython):

In [1]: import requests

In [2]: r = requests.get("https://api.coinmarketcap.com/v1/ticker/cardano/?convert=USD")

In [3]: r.status_code
Out[3]: 200

In [4]: r.json()
Out[4]:
[{'24h_volume_usd': '198429000.0',
  'available_supply': '25927070538.0',
  'id': 'cardano',
  'last_updated': '1515772155',
  'market_cap_usd': '20403048889.0',
  'max_supply': '45000000000.0',
  'name': 'Cardano',
  'percent_change_1h': '-3.09',
  'percent_change_24h': '5.94',
  'percent_change_7d': '-22.7',
  'price_btc': '0.00005650',
  'price_usd': '0.78694',
  'rank': '5',
  'symbol': 'ADA',
  'total_supply': '31112483745.0'}]

In [5]: usd = r.json()[0].get('price_usd')

In [6]: usd
Out[6]: '0.78694'

如果您想将响应打印为字符串,则可以使用内置的lib json(将其转储到文件或其他内容中):

In [8]: import json

In [10]: json.dumps(r.text, indent=2)
Out[10]: '"[\\n    {\\n        \\"id\\": \\"cardano\\", \\n        \\"name\\": \\"Cardano\\", \\n        \\"symbol\\": \\"ADA\\", \\n        \\"rank\\": \\"5\\", \\n        \\"price_usd\\": \\"0.78694\\", \\n        \\"price_btc\\": \\"0.00005650\\", \\n        \\"24h_volume_usd\\": \\"198429000.0\\", \\n        \\"market_cap_usd\\": \\"20403048889.0\\", \\n        \\"available_supply\\": \\"25927070538.0\\", \\n        \\"total_supply\\": \\"31112483745.0\\", \\n        \\"max_supply\\": \\"45000000000.0\\", \\n        \\"percent_change_1h\\": \\"-3.09\\", \\n        \\"percent_change_24h\\": \\"5.94\\", \\n        \\"percent_change_7d\\": \\"-22.7\\", \\n        \\"last_updated\\": \\"1515772155\\"\\n    }\\n]"'