首页 > 解决方案 > 无法识别列表中的所有元素

问题描述

我正在尝试读取文本文件中的每 10 行,将行的某些部分添加到列表中,而忽略其余部分。我的 .txt 文件中的每一行都是一个由 29 个元素组成的逗号分隔列表,我line.strip(',')用来将每一行分隔成一个列表,称为line_list.

for line in current_file:
    if line.startswith('#'):
        pass
    for linenum, line in enumerate(current_file):
        if linenum % 10 == 0:
            line_list = line.split(",")
            time_list.append(line_list[0])
            values.append(line_list[4])
        else:
            pass

但是,python 似乎并没有识别列表中的所有元素。当我打印len(line_list)它返回值 29,但不识别任何大于 0 的索引。所以该行time_list.append(line_list[0])有效,但我得到一个索引超出范围错误values.append(line_list[4])

打印line_list[0]适用于所有行,当我打印时,line_list我得到了 29 个逗号分隔值的完整列表。

有任何想法吗?

编辑 感谢评论者我删除了双重迭代,所以更新的代码是

for linenum, line in enumerate(current_file):
    if line.startswith('#'):
         pass
    if linenum % 10 == 0:
         line_list = line.split(",")
         time_list.append(line_list[0])
         values.append(line_list[4])
    else:
         pass

我仍然收到索引超出范围错误,因为line_list[4]

标签: listindexing

解决方案


您正在使用line两次 a 变量来循环。这不是一个好的编码习惯,可能会导致奇怪的行为。例如,将第二变量更改为l

for line in current_file:
    if line.startswith('#'):
        pass
    for linenum, l in enumerate(current_file):
        if linenum % 10 == 0:
            line_list = l.split(",")
            print(line_list)
            time_list.append(line_list[0])
            values.append(line_list[4])
        else:
            pass

推荐阅读