【问题标题】:How to print out a numbered IP Address in Python 3 [duplicate]如何在 Python 3 中打印出编号的 IP 地址 [重复]
【发布时间】:2020-08-02 17:04:51
【问题描述】:

假设IP_Addresses 是IP 地址的变量。

>>> IP_Addresses = '''
... 1.1.1.1
... 2.2.2.2
... 3.3.3.3
... '''
>>> 

如果我使用这个问题的枚举解决方案,我没有得到正确的 IP 地址

How to print out a numbered list in Python 3

>>> for number, IP_Address in enumerate(IP_Addresses):
...     print(number, IP_Address)
... 
0 

1 1
2 .
3 1
4 .
5 1
6 .
7 1
8 

9 2
10 .
11 2
12 .
13 2
14 .
15 2
16 

17 3
18 .
19 3
20 .
21 3
22 .
23 3
24 

>>>

期望的输出

1 - 1.1.1.1
2 - 2.2.2.2
3 - 3.3.3.3

【问题讨论】:

标签: python python-3.x ip-address


【解决方案1】:

你可以用换行符分割变量,像这样:

IP_Addresses = '''
... 1.1.1.1
... 2.2.2.2
... 3.3.3.3
... '''

i = 0
IP_Addresses = IP_Addresses.split('\n')
for line in IP_Addresses:
    if line and any(char.isdigit() for char in line):
        i += 1
        print(f'{i} - {line}')

输出:

1 - ... 1.1.1.1
2 - ... 2.2.2.2
3 - ... 3.3.3.3

【讨论】:

  • 谢谢。是否可以删除输出中多余的第 0 行和第 4 行?
【解决方案2】:

你真的应该使用列表而不是长字符串来创建IP_Addresses 变量:

IP_Addresses = ["1.1.1.1","2.2.2.2","3.3.3.3"]

那么你就不需要拆分输入了。

如果您坚持使用长字符串,则使用.split("\n") 分割新行而不是.

例子:

for number, IP_Address in enumerate(IP_Addresses.split("\n")):
    print(number, IP_Address)

【讨论】:

  • 如何删除输出中多余的04 行?
  • 这些是由您的字符串中的第一个和最后一个空行添加的,请查看我的新答案以获取有关如何使用列表的指南。
  • AttributeError: 'list' object has no attribute 'split'
  • 使用列表时不需要拆分功能。
  • 太棒了! List 是 Python 编程的基础,尽情享受吧!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
  • 1970-01-01
  • 2016-11-30
  • 1970-01-01
  • 1970-01-01
  • 2020-05-19
相关资源
最近更新 更多