遍历已具有索引的变量并写入JSON

时间:2018-10-10 13:19:47

标签: python json python-3.x iteration

我正在使用Selenium WebDriver,但我的实际问题更多是与在Python中进行迭代有关。我有5个打开的窗口,我正在从某些站点中写入一些数据,这些数据已被我抓取到许多已创建的JSON文件中。我的代码如下:

for i in range(len(driver.window_handles)):
    try:
        if value != "name" and variable.is_displayed():
            with open("game%s.json" % (i + 1), "w") as outfile:
                json.dump({"some variable": "data", "2nd variable":"2nd data", "nth variable": "nthdata[2][i]"}, outfile)
    except NoSuchElementException:
        print("text")

当不涉及其他索引并且我一直在使用很多迭代时,这很好用,但是当涉及第n个变量时,我需要在[2]中使用的变量中的项,例如,想要在我拥有的每个窗口中重复上述操作,并将其写入相应的JSON文件,我会收到错误消息

IndexError: string index out of range

我希望我已经弄清楚了我要实现的目标,我进行了一些搜索,但是找不到我想要的东西。我该如何更改此值,以便迭代能够正常工作,以及要尝试使用的确切索引的正确次数?

1 个答案:

答案 0 :(得分:0)

如果您的数组有5个对象,则len返回5,但数组的最后一个索引是4。在len方法之后添加-1,以使范围在0和4 = 5个对象之间

for i in range(len(driver.window_handles)-1):
    try:
        if value != "name" and variable.is_displayed():
            with open("game%s.json" % (i + 1), "w") as outfile:
                json.dump({"some variable": "data", "2nd variable":"2nd data", "nth variable": "nthdata[2][i]"}, outfile)
    except NoSuchElementException:
        print("text")