首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问python列表中的值?

如何访问python列表中的值?
EN

Stack Overflow用户
提问于 2021-03-28 05:23:33
回答 2查看 65关注 0票数 0

我正在尝试使用以下代码获得特定单词的定义:

代码语言:javascript
复制
import requests

url = requests.get("https://api.dictionaryapi.dev/api/v2/entries/en_US/fish")

a = url.text()

print(a)

上面代码段中的链接返回如下一些值:

代码语言:javascript
复制
[{"word":"fish","phonetics":[{"text":"/fɪʃ/","audio":"https://lex-audio.useremarkable.com/mp3/fish_us_1.mp3"}],"meanings":[{"partOfSpeech":"noun","definitions":[{"definition":"A limbless cold-blooded vertebrate animal with gills and fins and living wholly in water.","example":"the sea is thick with fish"}]},{"partOfSpeech":"intransitive verb","definitions":[{"definition":"Catch or try to catch fish, typically by using a net or hook and line.","synonyms":["go fishing","angle","cast","trawl"],"example":"he was fishing for bluefish"}]}]},{"word":"fish","phonetics":[{"text":"/fɪʃ/","audio":"https://lex-audio.useremarkable.com/mp3/fish_us_1.mp3"}],"meanings":[{"partOfSpeech":"transitive verb","definitions":[{"definition":"Mend or strengthen (a beam, joint, mast, etc.) with a fish."}]},{"partOfSpeech":"noun","definitions":[{"definition":"A flat plate of metal, wood, or another material that is fixed on a beam or across a joint in order to give additional strength, especially on a ship's damaged mast or spar as a temporary repair."}]}]}]

现在,我想从上面的结果中得到第一个定义。我怎么弄到它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-28 06:36:26

复杂的JSON文档和对此类文档的查询与操作XML文档类似;您可以使用一组自定义的列表理解和实用函数,但应该使用专门的工具。

要在Python中操作JSON文档,可以查看ng

  • 要提取的项是使用JSONPath表达式定义的,该表达式相当于XML的XPath
  • 您只需添加/更新JSONPath表达式,以提取更多/新项

在下一个示例中,在JSON文档中逐个运行在QUERIES中定义的QUERIES表达式:

代码语言:javascript
复制
import requests
import jsonpath_ng
import json


URL = 'https://api.dictionaryapi.dev/api/v2/entries/en_US/fish'
QUERIES = {
    'First kind, first meaning, first definition': jsonpath_ng.parse('[0].meanings[0].definitions[0].definition'),
    'All kind, first definitions': jsonpath_ng.parse('[*].meanings[0].definitions[0].definition'),
    'All definitions': jsonpath_ng.parse('[*].meanings[*].definitions[*].definition')
}


if __name__ == '__main__':
    jsdata = requests.get(URL).json()
    for name, query in QUERIES.items():
        print(f'--- {name} ---')
        for match in query.find(jsdata):
            print(json.dumps(match.value, indent=2))
        print()
票数 0
EN

Stack Overflow用户

发布于 2021-03-28 05:56:52

尝尝这个。

代码语言:javascript
复制
s = [...]
for i in s:
    print(i['word'],[ k['definition'] for j in i['meanings'] for k in j['definitions']])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66838606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档