【问题标题】:Python - Issue handling list of ip addresses as string list when single ip elementPython - 当单个 ip 元素时,将 ip 地址列表处理为字符串列表
【发布时间】:2018-12-05 17:16:19
【问题描述】:

我尝试将 IP 地址列表作为字符串进行管理,并将它们打印为:

iplist = ("192.168.1.1", "192.168.1.2",...)
for ip in iplist:
  print ip

导致:

192.168.1.1
192.168.1.2
....

如果列表有多个元素,它可以工作,但如果列表只有一个元素,它会像字符串字符列表一样使用单个 ip 并打印:

1
9
2
. 
1
....

我怎样才能以简单的方式处理这个问题?

【问题讨论】:

  • 除非您将iplist 定义为实际字符串,否则不会发生这种情况。反正目前它不是一个列表,它是一个元组,但是如果你定义一个列表并将 IP 附加到它,你就不会遇到这个问题,因为容器本身是可迭代的。
  • 我认为您的问题出在您发布的代码的上游。 iplist = ("192.168.1.1", "192.168.1.2",...) 可能是其他代码的结果,在单个结果的情况下返回原始字符串。我们看不到生成它的代码。

标签: python string list ip


【解决方案1】:

您拥有的不是 IP 地址列表,而是一个元组。

在单例元组的情况下,添加逗号可以解决您的问题。

iplist = ("192.168.1.1",)
for ip in iplist:
    print ip

将其转换为列表也可以解决问题。

iplist = ["192.168.1.1"]
for ip in iplist:
    print ip

列表和元组的重要区别在于列表可以附加,而元组是不可变的。

通常最好对可添加的数据使用列表(如 IP 地址列表),并为结构化数据保留元组(如 x-y 坐标)。

【讨论】:

  • 这是真的,但我很好奇 OP 如何最终得到一个在单个项目的情况下简单地变成括号的元组:)
  • 我认为 Python 正确地将括号中的字符串解释为字符串。在单例元组的情况下,添加尾随逗号似乎是必要的。
  • 没错,那么有什么代码可以在多个结果的情况下创建一个有效的元组,但在单个结果的情况下只给出原始字符串?
  • 我明白你的意思!我也很好奇。
猜你喜欢
  • 2018-04-05
  • 2011-05-30
  • 1970-01-01
  • 2020-10-22
  • 2017-12-15
  • 2020-01-11
  • 2011-10-06
  • 2012-09-17
  • 1970-01-01
相关资源
最近更新 更多