前言:我花了一段时间做一个轻巧的桌面应用程序开发人员(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"])一开始,我试着在没有joy的情况下使用类似print(i["lfs"]["lf"])的东西。
TypeError:列表索引必须是整数或切片,而不是str
问题:如何循环遍历0(索引?)值,以返回所有结果。
对于奖金作为后续,我如何返回所有相关的结果在vars?
发布于 2016-02-04 17:50:49
如果您仔细查看正在输出的JSON,您可以看到:
lf才能被找到。因此,您只是简单地不正确地访问JSON数据。您的打印功能应该如下:
def printResults(data):
js = json.loads(data)
for d in js:
print(d["lfs"][0]["vars"][0]["lf"])或者,如果你想打印所有的lf:
for d in js:
for e in d["lfs"]:
for f in e["vars"]:
print(f["lf"])发布于 2016-02-04 17:45:19
最自然的,循环可以通过.组织一个循环:
for i in theJSON:
for j in i["lfs"]:
print(j["lf"])它也可以做一个一条龙:
print([j["lf"] for j in i["lfs"] for i in theJSON])那是一条快乐的道路。检查无效输入并对vars执行此操作作为练习。
https://stackoverflow.com/questions/35207683
复制相似问题