所以我一直在使用 json 工作,并且基本上只是用它提高知识。
我想做的是将所有这些可用的数字等保存在列表中或您可能想到的任何内容中。
杰森:
{
"threads": [
{
"seoTitle": "trucks",
"other_crap": "it's a fox!"
},
{
"seoTitle": "rockets",
"other_crap": "i'm rocket man"
},
{
"seoTitle": "helicopter",
"other_crap": "for 007",
"skus": [
{
"Number": "7",
"available": true
},
{
"Number": "7.5",
"available": true
},
{
"Number": "8",
"available": false
},
{
"Number": "8.5",
"available": true
},
{
"Number": "9",
"available": true
},
{
"Number": "9.5",
"available": false
},
{
"Number": "10",
"available": true
},
{
"Number": "10.5",
"available": false
},
{
"Number": "11",
"available": true
},
{
"Number": "11.5",
"available": false
},
{
"Number": "12",
"available": true
},
{
"Number": "12.5",
"available": false
},
{
"Number": "13",
"available": true
}
],
"restricted": false,
"subtitle": "Stackoverflow"
}
]
}
正如您从 Json 文件中看到的那样,有skus,下面是不同的数字和可用,我想做的是我想根据 IF 可用来打印所有NUMBERS,这意味着如果它可用,则打印出来或将其保存到列表中,然后在搜索所有内容时打印出来,如果不是可用,然后只需跳到下一个。- 这就是我的目标 - 问题是我不知道我应该通过 json 文件做什么,我怎么可能让它知道根据可用保存到列表中?
1(您的预期输出是多少,
我希望输出可能如下所示:
helicopter
for 007
7
7.5
8.5
9
10
11
12
13
2(到目前为止您尝试过什么,
现在我只打印了seoTitle和other_crap
print(threads['seoTitle'])
print(threads['other_crap'])
3(为什么你尝试过的东西不起作用
我试图做一个 for 循环,但我完全失败了
for element in threads['skus']:
if element not 'available'
基本失败:/
我正在使用的代码:
old_list = []
while True:
try:
resp = requests.get(url)
new_list = resp.json()['threads']
for item in new_list:
if item['seoTitle']not in old_list:
try:
print(item['seoTitle'])
print(item['other_crap'])
itemskus = item.get('skus', {})
if itemskus:
for element in item['skus']:
print(element)
else:
print('Item skus could not be found')
old_list.append(['seoTitle'])
except Exception as e:
print(e)
print("ERROR")
time.sleep(5)
continue
else:
randomtime = random.randint(4, 60)
time.sleep(randomtime)
except Exception as e:
continue
现在这是我的输出:
helicopter
for 007
{"Number": "7", "available": true }
{"Number": "7.5", "available": true }
{"Number": "8", "available": false }
{"Number": "8.5","available": true }
{"Number": "9", "available": true}
{"Number": "9.5", "available": false}
{"Number": "10", "available": true}
{"Number": "10.5", "available": false }
{"Number": "11", "available": true}
{"Number": "11.5","available": false }
{"Number": "12","available": true }
{"Number": "12.5", "available": false}
{"Number": "13", "available": true }
首先,您需要将json
导入 pythondict
。假设您的文件被称为my_sample.json
然后您这样做
import json
with open('my_sample.json') as f:
sample = json.load(f)
现在,sample
是一个包含json
数据的字典。您希望访问线程列表中第 3 个线程的skus
,前提是该线程可用。您可以通过创建以下列表来实现此目的
available_skus = [float(d['Number']) for d in sample['threads'][2]['skus'] if d['available']]
然后打印您需要的内容
print(sample['threads'][2]['seoTitle'])
for el in available_skus:
print(el)
输出
helicopter
7
7.5
8.5
9
10
11
12
13
编辑
如果您不确定skus
信息是否始终在第 3 个线程上,则可以将available_skus
替换为以下内容
available_skus = [d['Number'] for thread in sample['threads'] if 'skus' in thread.keys() for d in thread['skus'] if d['available']]