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