【发布时间】:2016-02-04 17:28:51
【问题描述】:
前言:我曾经是一名轻量级桌面应用程序开发人员(VBA 和 SQL - 告我!),但我对 python 完全陌生。
我正在尝试在 Python 中打印 JSON 提要的输出作为训练练习:
JSON 网址 - http://www.nactem.ac.uk/software/acromine/dictionary.py?sf=uk
[
{
"lfs": [
{
"freq": 656,
"lf": "United Kingdom",
"since": 1980,
"vars": [
{
"freq": 655,
"lf": "United Kingdom",
"since": 1980
},
{
"freq": 1,
"lf": "United-Kingdom",
"since": 2006
}
]
},
{
"freq": 393,
"lf": "urokinase",
"since": 1969,
"vars": [
{
"freq": 358,
"lf": "urokinase",
"since": 1969
},
{
"freq": 35,
"lf": "Urokinase",
"since": 1970
}
]
},
{
"freq": 6,
"lf": "uridine kinase",
"since": 1977,
"vars": [
{
"freq": 5,
"lf": "uridine kinase",
"since": 1977
},
{
"freq": 1,
"lf": "Uridine kinase",
"since": 2007
}
]
},
{
"freq": 6,
"lf": "urinary kallikrein",
"since": 1985,
"vars": [
{
"freq": 6,
"lf": "urinary kallikrein",
"since": 1985
}
]
},
{
"freq": 4,
"lf": "urea kinetics",
"since": 1980,
"vars": [
{
"freq": 2,
"lf": "urea kinetics",
"since": 1980
},
{
"freq": 2,
"lf": "urea kinetic",
"since": 1989
}
]
},
{
"freq": 4,
"lf": "University of Kentucky",
"since": 2000,
"vars": [
{
"freq": 4,
"lf": "University of Kentucky",
"since": 2000
}
]
}
],
"sf": "UK"
}
]
到目前为止,我只研究了如何使用以下代码一次返回一个结果:
import urllib.request
import json
def main():
SearchForAbbrev = input("Please enter an abbreviation to search for:")
urlData = "http://www.nactem.ac.uk/software/acromine/dictionary.py?sf=" + SearchForAbbrev
webUrl = urllib.request.urlopen(urlData)
print (webUrl.getcode())
if (webUrl.getcode() == 200):
data = webUrl.read()
data = data.decode("utf-8")
printResults(data)
else:
print ("Received an error from server, cannot retrieve results " + str(webUrl.getcode()))
def printResults(data):
theJSON = json.loads(data)
for i in theJSON:
print(i["lfs"][0]["lf"])
我最初尝试使用 print(i["lfs"]["lf"]) 之类的东西时并不高兴。
TypeError: 列表索引必须是整数或切片,而不是 str
问题:如何循环遍历print(i["lfs"][0]["lf"]) 中的0(索引?)值以返回所有结果。
对于后续的奖励积分,我如何在vars 中返回所有相关结果?
【问题讨论】:
标签: python json python-3.x