【发布时间】:2019-12-19 10:05:32
【问题描述】:
我有一个复杂的 JSON 对象,其中包含有关单词的字典信息,我只想获取同义词。我设法检索了它们,但有些单词有两个或多个同义词列表(因为它们可以同时是动词和名词)。我只想获得第一个同义词列表。这是我所做的:
import requests
import json
with open(r'C:\Users...') as file:
list = []
for line in file.readlines():
list += line.split()
for keyword in list:
print(keyword)
ship_api_url = "https://..."
request_data = requests.get(ship_api_url)
data = request_data.text
parsed = json.loads(data)
# print(json.dumps(parsed, indent=3))
for item in parsed:
print(item['meta']['syns'][0])
这就是我得到的 - 请注意,“watch”这个词有三个同义词列表,“create”这个词只有一个同义词列表,“created”这个词有两个同义词列表:
watch
['custodian', 'guard', 'guardian', 'keeper', 'lookout', 'minder', 'picket', 'sentinel', 'sentry', 'warden', 'warder', 'watcher', 'watchman']
['eye', 'follow', 'observe']
['anticipate', 'await', 'expect', 'hope (for)']
create
['beget', 'breed', 'bring', 'bring about', 'bring on', 'catalyze', 'cause', 'do', 'draw on', 'effect', 'effectuate', 'engender', 'generate', 'induce', 'invoke', 'make', 'occasion', 'produce', 'prompt', 'result (in)', 'spawn', 'translate (into)', 'work', 'yield']
created
['begot', 'bred', 'brought', 'brought about', 'brought on', 'catalyzed', 'caused', 'did', 'drew on', 'effected', 'effectuated', 'engendered', 'generated', 'induced', 'invoked', 'made', 'occasioned', 'produced', 'prompted', 'resulted (in)', 'spawned', 'translated (into)', 'worked', 'yielded']
['beget', 'breed', 'bring', 'bring about', 'bring on', 'catalyze', 'cause', 'do', 'draw on', 'effect', 'effectuate', 'engender', 'generate', 'induce', 'invoke', 'make', 'occasion', 'produce', 'prompt', 'result (in)', 'spawn', 'translate (into)', 'work', 'yield']
如果我在已有的 [0] 之后添加另一个 [0],我会得到每个列表的第一个单词,而不是我需要的第一个完整列表...
【问题讨论】:
-
只需在
print(item['meta']['syns'][0])之后添加break语句并停止循环。 -
非常感谢!使用 break 语句,我得到了我想要的确切结果。但我仍然想知道如何从列表中选择一个列表...
-
第一个列表是
item['meta']['syns'][0],您可以像在问题中描述的那样添加[0]时那样通过索引它们来访问其中的元素。它是一个列表,因此您可以执行其他操作,例如通过for循环遍历其内容。