大家好我有以下代码正常工作
import requests
import json
f= open
r=requests.get('https://greatbritishpublictoiletmap.rca.ac.uk/loos/54c234f02ec4abe957b84f37?format=json')
data = r.json()
with open('data.json', 'w') as f:
json.dump(data, f)
但我希望将厕所ID作为网址的一部分,在它之上是动态的54c234f02ec4abe957b84f37?它必须从json列表中读取,我可以通过此代码加载列表 -
import json
with open('loos.json') as json_data:
d = json.load(json_data)
但我无法弄清楚如何从loos数据集中读取'id',将每个json结果附加到json转储,因为它遍历'loos'数据集
我觉得我已经接近完成这项任务,但只需要一个小费或2
非常感谢。附加更新
`import json
import requests
with open('Tloos.json') as json_data:
data = json.load(json_data)
for i, loo in enumerate(data['features']):
loo_id = loo['_id']
r=requests.get('https://greatbritishpublictoiletmap.rca.ac.uk/loos/{}?format=json'.format(loo_id))
data = r.json()
with open('data%d.json' %i, 'w') as f:
json.dump(data, f)`
所以,这是我的尝试,但它只保存输出的json文件中的最后一个loo id,我猜它会覆盖其他文件(我的测试Tloos.json文件总共有3个厕所)或者没有正确迭代?我该如何调试呢?
答案 0 :(得分:1)
使用字符串format
函数可以非常轻松地完成您指定的内容。
import requests
import json
with open('loos.json') as json_data:
loo_id = json.load(json_data)['id']
r=requests.get('https://greatbritishpublictoiletmap.rca.ac.uk/loos/{}?format=json'.format(loo_id))
data = r.json()
with open('data.json', 'w') as f:
json.dump(data, f)
这将为您提供如何做到这一点的要点。我肯定不知道你的loos.json结构,因此你需要调整它以获得loo_id
。其余的保持不变。
如果你想迭代许多loo_ids,你必须用循环来做这样的事情:
for i, loo in enumerate(loo_structure['features']):
loo_id = loo['_id']
r=requests.get('https://greatbritishpublictoiletmap.rca.ac.uk/loos/{}?format=json'.format(loo_id))
data = r.json()
with open('data%d.json' %i, 'w') as f:
json.dump(data, f)
其中loo_ids
是包含您的ID的迭代。