我正在编辑JSON文件。它目前有关于公共小径的信息,以及网站的URL。我想在每个对象中创建一个新字段,并将URL编辑为包含HTML链接标记。我想不通
这是我目前的尝试IndexError: list index out of range
import json
with open('data/querycopy.json','r', encoding="utf8") as jsonFile:
data = json.load(jsonFile)
def main():
for key in range (3000):
x = data['features'][key]["attributes"]['website']
urlvar = """<a href="{}"></a>""".format(x)
urldata = {"url": urlvar}
data['features'][key]['attributes'] = urldata
if __name__ == '__main__':
main()
我试过这个:
def main():
for key in range (3000):
x = data['features'][key]["attributes"]['website']
urlvar = """<a href="{}"></a>""".format(x)
print(urlvar)
它按预期工作,提供格式化的链接:
<a href="https://ebird.org/hotspot/L348443"></a>
<a href="https://www.alltrails.com/trail/us/maine/california-field-wildlife"></a>
<a href="https://www.nature.org/en-us/get-involved/how-to-help/places-we-protect/oxbow-> > nature-preserve/"></a>
<a href="https://www.sanbi.org/gardens/kirstenbosch/"></a>
但也在这一行上拉出一个错误:
---> 13 x = data['features'][key]["attributes"]['website']
> IndexError: list index out of range
我不知道这意味着什么,因为它似乎是工作?但是,我尝试过的任何方法都无法更新JSON。
谢谢你的帮助我不是一个专业人士,但我在空闲时间制作一个网站,使数据更容易访问。我有动力,但没有受过教育!
编辑:数据格式设置示例
data formatting example
1条答案
按热度按时间gfttwv5a1#
问题是你的循环使用了
key
在0-2999(包括0和2999)范围内的所有值。然而,data['features']
可能没有3000个元素,这意味着key
的值之一将过高。当你试图索引一个索引太高/不存在的列表时,你会得到一个IndexError
。这就是你得到的错误。不使用
range(3000)
,只需循环遍历列表data['features']
的每个元素。就像这样: