我有一个包含100个逗号分隔IP的文本文件,它们之间只有空格。
我需要一次取10个并将它们放在另一个代码块中。所以,对于IP:
1.1.1.1, 2.2.2.2, 3.3.3.3, 4.4.4.4, ... 123.123.123.123, 124.124.124.124, 125.125.125.125
我需要:
codethings [1.1.1.1, 2.2.2.2, ... 10.10.10.10] code code code
codethings [11.11.11.11, 12.12.12.12, ... 20.20.20.20] code code code
codethings [21.21.21.21, 22.22.22.22, ... 30.30.30.30] code code code
etc
我很确定我能用RegEx做到这一点,但我无法帮助,但我认为有更简单的方法可以做到。
任何和所有帮助表示赞赏。谢谢!
答案 0 :(得分:0)
在逗号上拆分,从每个元素中删除过多的空格:
txt = '''1.1.1.1, 2.2.2.2, 3.3.3.3, 4.4.4.4,
123.123.123.123, 124.124.124.124, 125.125.125.125'''
ip_list = map(str.strip, txt.split(','))
关于分页,请参阅以下内容的答案:Paging python lists in slices of 4 items或Is this how you paginate, or is there a better algorithm?
我还建议(只是为了确定)过滤掉无效的IP地址,例如使用生成器和socket
模块:
from __future__ import print_function
import sys
import socket
txt = '''1.1.1.1, 2.2.2.2, 3.3.3.3, 4.4.4.4,
123.123.123.123, 124.124.124, 555.125.125.125,'''
def iter_ips(txt):
for address in txt.split(','):
address = address.strip()
try:
_ = socket.inet_aton(address)
yield address
except socket.error as err:
print("invalid IP:", repr(address), file=sys.stderr)
print(list(iter_ips(txt)))