迭代JSON并添加新数据(Python)

h6my8fg2  于 2023-05-08  发布在  Python
关注(0)|答案(1)|浏览(87)

我正在编辑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

gfttwv5a

gfttwv5a1#

问题是你的循环使用了key在0-2999(包括0和2999)范围内的所有值。然而,data['features']可能没有3000个元素,这意味着key的值之一将过高。当你试图索引一个索引太高/不存在的列表时,你会得到一个IndexError。这就是你得到的错误。
不使用range(3000),只需循环遍历列表data['features']的每个元素。就像这样:

def main():
    for key in range(len(data['features'])):
        x = data['features'][key]["attributes"]['website']
        urlvar = """<a href="{}"></a>""".format(x)
        print(urlvar)

相关问题