在for循环中列出索引超出范围python

时间:2017-02-02 07:12:54

标签: python arrays json loops

我正在尝试将文本文档中的行拆分为数组,并将属性附加到数组中的每个值,然后再将它们转换为json以显示在文本文件中。

然而,无论我如何调整我的代码,我仍然会遇到错误“ IndexError:列出了对于fields1 [1]行的rang e“的索引。

    with open(fileName,'r') as file:
    for line in file:
        if line.startswith('-') and 'section1' in line:
            for li in file:
                fields1 = li.split(',')
                testarr.append({
                "section1a": fields1[0],
                "section1b": fields1[1],
                "section1c": fields1[2]
                })      
                with open(test_dir,'a+') as test_file:
                    json.dump(testarr, test_file)

知道问题出在哪里?

2 个答案:

答案 0 :(得分:2)

当你li.split(',')时,它没有分成3部分。也许它没有足够的,来分裂。例如.. li = 'asdf,ffd'这会在fields1 [2]上产生错误,因为它只会分成两部分['asdf', 'ffd']

答案 1 :(得分:2)

你有一些奇怪的缩进,没有内容我不知道你的错误会在哪里,但这应该有助于你找到它:

testarr = []
with open(fileName,'r') as file:
    for line in file:
        if line.startswith('-') and 'section1' in line:
            fields1 = li.split(',')
            if len(fields1) >= 3:
                testarr.append(
                    {
                    "section1a": fields1[0],
                    "section1b": fields1[1],
                    "section1c": fields1[2]
                    }
                )
            else:
                print("This line has an error in it: {}".format(line))

with open(test_dir,'a+') as test_file:
    json.dump(testarr, test_file)