繁体   English   中英

IndexError:列表索引超出范围 - python for 循环

[英]IndexError: list index out of range - python for loop

我正在尝试修复这个错误,我不太理解它,因为我是一个技术欠佳的网络工程师。
我正在将路由器上的 show 命令行读取到列表中 - 这一切正常。
从该列表中,我想解析出某些值,我正在使用 for 循环来执行此操作。
我在最后得到了我需要的结果,但也是一个错误。
我只想要列表中的某些值,即“第三个”IP 地址,没有端口号等(即“2.122.62.193”、“31.49.158.183”)

out1 = ['tcp 217.33.162.162:443    172.16.0.1:443        2.122.62.193:49971    
2.122.62.193:49971', 'tcp 217.33.162.162:443    172.16.0.1:443        
31.49.158.183:49266   31.49.158.183:49266', '']
gnat = []

for x in out1:
   y = x
   z = y.split(':')[3]
   w = z.split()[1]
   gnat.append(w)

>>> for x in out1:
...    y = x
...    z = y.split(':')[3]
...    w = z.split()[1]
...    gnat.append(w)
...
Traceback (most recent call last):
  File "<console>", line 3, in <module>
IndexError: list index out of range
>>> print gnat
['2.122.62.193', '31.49.158.183'

它可能不是最有效的代码,但这是正确的结果。
只是我不明白错误?

查看列表值,您可能会看到错误位于''.split(':')[3] 你在那里分裂什么?

试试这个逻辑

  1. 如果它是一个空字符串,则什么都不做
  2. 分割空间
  3. 获取IP:端口
  4. 拆分端口

像这样的东西

for x in out1:
    if x.strip() == '':
        continue
   ip_port = x.split()[3]
   ip = ip_port.split(':')[0]
   gnat.append(ip)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM