【问题标题】:Get Data from JSON Python? [duplicate]从 JSON Python 获取数据? [复制]
【发布时间】:2015-03-09 20:19:10
【问题描述】:

我正在用 Python 做一个实时货币转换器。我已经成功地将 URL 所需的所有数据提取到 Python 中。但是我现在试图在 url 中调用一个特定的字符串。这是我当前的代码:

import urllib.request
import json

##Define JSON API Url
with urllib.request.urlopen("http://openexchangerates.org/api/latest.json?app_id=XXX") as url:
    response = url.read()

##Print Fetched data
print (response)

如您所见,我已经打印了它获取的所有数据,但现在它正在打印其中的特定字符串。

我的问题是,我如何从 url 解析特定的字符串?我听说过 json.load ,我应该使用它吗?

【问题讨论】:

  • 有什么问题吗?你试过json.loads(response)吗?
  • 抱歉,我的问题已被编辑。你能用 json.loads 进一步解释吗?感谢您的快速回复
  • 最好先搜索文档:docs.python.org/3/library/json.html
  • 如果您刚刚尝试json.loads()first,您的问题会开始得更好。您可能遇到了问题,但您至少可以在此处包含错误消息。

标签: python json string


【解决方案1】:

您需要将数据加载为 JSON; json module 可以为您执行此操作,但您需要先将数据解码为文本。

import urllib.request
import json

with urllib.request.urlopen("http://openexchangerates.org/api/latest.json?app_id=XXX") as url:
    response = url.read()

charset = url.info(). get_content_charset('utf-8')  # UTF-8 is the JSON default
data = json.loads(response.decode(charset))

从那时起,data 是一个 Python 对象。

根据documenation 判断,您应该能够以如下方式访问费率:

print('Euro rate', data['rates']['EUR'])

例如。

【讨论】:

  • 太棒了!感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2013-07-31
  • 2013-01-10
  • 1970-01-01
  • 2019-05-23
  • 2012-12-10
  • 1970-01-01
相关资源
最近更新 更多