【问题标题】:How to access nested values in json [closed]如何访问json中的嵌套值[关闭]
【发布时间】:2020-05-07 07:57:34
【问题描述】:

我正在尝试使用 api 和 python 从 scopus 获取数据。我使用 python 模块请求进行查询。 查询的响应给我一个json,其值如下。

{ “搜索结果”: { "opensearch:totalResults": "1186741", "opensearch:startIndex": "0", "opensearch:itemsPerPage": "25", “开放搜索:查询”:{ "@role": "请求", "@searchTerms": "所有(机器学习)", “@startPage”:“0” }, “关联”: [ { "@_fa": "真", “@ref”:“自我”, "@href": "api 查询", “@type”:“应用程序/json” }, { "@_fa": "真", "@ref": "第一", "@href": "api 查询", “@type”:“应用程序/json” }, { "@_fa": "真", "@ref": "下一个", "@href": "api 查询", “@type”:“应用程序/json” }, { "@_fa": "真", "@ref": "最后", "@href": "api 查询", “@type”:“应用程序/json” } ], “入口”: [ { "@_fa": "真", “关联”: [ { "@_fa": "真", “@ref”:“自我”, "@href": "https://api.elsevier.com/content/abstract/scopus_id/85081889595" }, { "@_fa": "真", "@ref": "作者隶属关系", "@href": "https://api.elsevier.com/content/abstract/scopus_id/85081889595?field=author,affiliation" }, { "@_fa": "真", "@ref": "scopus", "@href": "https://www.scopus.com/inward/record.uri?partnerID=HzOxMe3b&scp=85081889595&origin=inward" }, { "@_fa": "真", "@ref": "scopus-citedby", "@href": "https://www.scopus.com/inward/citedby.uri?partnerID=HzOxMe3b&scp=85081889595&origin=inward" } ], "棱镜:url": "https://api.elsevier.com/content/abstract/scopus_id/85081889595", "dc:identifier": "SCOPUS_ID:85081889595", “开斋节”:“2-s2.0-85081889595”, "dc:title": "通过文本和音频挖掘识别对 PTSD 的简要折衷心理治疗中的热点", "dc:creator": "Wiegersma S.", "prism:publicationName": "欧洲精神创伤学杂志", “棱镜:issn”:“20008198”, “棱镜:eIssn”:“20008066”, “棱镜:体积”:“11”, “棱镜:问题标识符”:“1”, “棱镜:pageRange”:空, “棱镜:封面日期”:“2020-12-31”, "prism:coverDisplayDate": "2020 年 12 月 31 日", “棱镜:doi”:“10.1080/20008198.2020.1726672”, "citedby-count": "0", “隶属关系”:[ { "@_fa": "真", "affilname": "特温特大学", “附属城市”:“恩斯赫德”, “附属国”:“荷兰” } ], "prism:aggregationType": "期刊", “子类型”:“ar”, "subtypeDescription": "文章", “文章编号”:“1726672”, “源 ID”:“21100394256”, “开放访问”:“1”, “openaccessFlag”:真 },

但是,响应是嵌套的 json,我无法访问它的内部元素,例如键 dc:creator、citedby-count 等。

谁能帮助我了解如何访问它的所有部分,例如作者姓名、引用者、隶属关系等。 我想将此结果存储为 csv,我可以将其用于进一步操作。

直接申请

df = pandas.read_json(文件名)

没有产生正确的结果格式:我得到一个这样的表格。

entry [{'@_fa': 'true', 'link': [{'@_fa': 'true', '@... link [{'@_fa': 'true', '@ref': 'self', '@href': 'ht... opensearch:Query {'@role': 'request', '@searchTerms': 'all(mach... opensearch:itemsPerPage 25 opensearch:startIndex 0 opensearch:totalResults 1186741

我也尝试过通过嵌套字典访问以列出字典的方法,但在某些时候,我卡住了。

with open('data.json', encoding='utf-8') as access:
      read_file = json.load(access)

type(read_file)

这是一个字典,所以我按照字典的语法进一步访问,它在某个点转换为列表并再次转换为字典。

我的主要要求是 - **如何创建一个带有列标题的 csv 文件,这些标题将是条目标签内的标签,如 dc:identifier、dc:title、dc:creator、citedby-count 等,以及其中的值 ** 在此输入代码

【问题讨论】:

  • 向我们展示一些示例数据,您迄今为止尝试过的内容以及您面临的具体问题。
  • 我已经编辑了我的问题。如何重新发布?我是新来的,我希望这次它有足够的细节

标签: python api scopus


【解决方案1】:
import json
dict_data = json.loads(response)
print(dict_data['key'])

这是你的意思吗?

【讨论】:

    猜你喜欢
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    相关资源
    最近更新 更多