【问题标题】:Iterating through variables that already have an index and writing to JSON遍历已经有索引的变量并写入 JSON
【发布时间】:2019-03-15 10:11:00
【问题描述】:

我正在使用 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

我希望我已经清楚地说明了我想要实现的目标,我搜索了一下,但找不到我要找的东西。我该如何更改它以使迭代工作,以及我尝试使用的确切索引的正确次数?

【问题讨论】:

    标签: python json python-3.x iteration


    【解决方案1】:

    如果您的数组有 5 个对象,则 len 返回 5,但数组的最后一个索引是 4。在 len 方法后添加 -1 以使范围 beetwen 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")
    

    【讨论】:

    • 感谢您的回答,但这并不能解决我遇到的问题。如果我接受了你的建议,它并不能解决范围错误,特别是写入 JSON 文件。
    • 对不起,我编辑了答案中的代码,你忘记了字典中的引用。
    • 谢谢,我已经修好了。
    • 是的,我现在解决了这个问题,谢谢,明天我会解释我做了什么。
    • 好的,如果我的方案解决了问题,请给分
    猜你喜欢
    • 1970-01-01
    • 2012-04-12
    • 2020-09-02
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 2012-09-11
    相关资源
    最近更新 更多