【问题标题】:Code runnig with "IndexError: list index out of range" at the end最后运行“IndexError:列表索引超出范围”的代码
【发布时间】:2018-02-26 14:55:11
【问题描述】:

我运行的代码给出了我想要的结果,但它在该结果的末尾显示“IndexError: list index out of range”。

这是我掌握的部分数据:

AMI;ZFAMIEM1;NBAMI702;DSDOU904;WHD93;SAGEM_WHD93_stbmib_02.29.82;08:3E:5D:5F:7A:42;2018-01-26 12:14:35;1516965275678;/app//wakeup;\N
AMI;ZFAMIEM1;NBAMI702;DSDOU904;WHD93;SAGEM_WHD93_stbmib_02.29.82;08:3E:5D:5F:7A:42;2018-01-26 12:14:35;1516965275824;/app//connect;ethernet
AMI;ZFAMIEM1;NBAMI702;DSDOU904;WHD93;SAGEM_WHD93_stbmib_02.29.82;08:3E:5D:5F:7A:42;2018-01-26 12:14:35;1516965275970;/app//tv_off;\N

这是我的代码:

ligne = data.split("\n")

for i in ligne:

    col = i.split(";")
    print(col[1])

我正在寻找的结果是:

ZFAMIEM1
ZFAMIEM1
ZFAMIEM1

IndexError                                
Traceback (most recent call last)
  <ipython-input-53-4d9c2e4b9014> in <module>()

  5 for i in ligne:
  6     col = i.split(";")
--> 7     print(col[1])

 IndexError: list index out of range

如果您对如何避免此错误有任何想法,请帮助我。谢谢!

【问题讨论】:

  • 确保你的 col 中有值。 if len(col) &gt; 0: print(col[1])
  • (不是这样)疯狂猜测:文件末尾有一个空行?当您对其执行i-split(';') 时,由于没有;,因此您不会获得包含至少两个元素的列表,因此col[1] 失败。
  • 我建议你看看csv module。你确定\N 吗?行尾应该是\n
  • @MCBama 那应该是if len(col) &gt; 1
  • 这可能只是您在此处输入的方式,但您的数据包含“\N”大写字母,而您拆分为“\n”小写字母。这样可以防止它分裂。

标签: python list indexing


【解决方案1】:

这可能会有所帮助。我正在使用filter 删除拆分后的所有空列表。

前:

s = r"""AMI;ZFAMIEM1;NBAMI702;DSDOU904;WHD93;SAGEM_WHD93_stbmib_02.29.82;08:3E:5D:5F:7A:42;2018-01-26 12:14:35;1516965275678;/app//wakeup;\n AMI;ZFAMIEM1;NBAMI702;DSDOU904;WHD93;SAGEM_WHD93_stbmib_02.29.82;08:3E:5D:5F:7A:42;2018-01-26 12:14:35;1516965275824;/app//connect;ethernet\n AMI;ZFAMIEM1;NBAMI702;DSDOU904;WHD93;SAGEM_WHD93_stbmib_02.29.82;08:3E:5D:5F:7A:42;2018-01-26 12:14:35;1516965275970;/app//tv_off;\n"""
for i in filter(None, s.split(r"\n")):
    col = i.split(";")
    print(col[1])

输出:

ZFAMIEM1
ZFAMIEM1
ZFAMIEM1

【讨论】:

    猜你喜欢
    • 2019-01-06
    • 2011-10-31
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多