是否有Python或Excel函数将单个字符转换为多个字符?

时间:2019-06-18 14:01:46

标签: python excel

我有一个IP地址列表,其中包含一个通配符(即"*")。一个示例为10.20.*.*10.*.*.*192.168.20.*

如何将IP地址转换为正确的IP地址?

例如,10.20.*.*将是10.20.0.010.20.0.110.20.0.2...10.20.255.255(成千上万个IP地址)。我正在尝试将允许通配符的系统转换为需要单个IP地址的系统。

我尝试使用RegEx在文本文件中使用搜索和替换,但未按预期工作

2 个答案:

答案 0 :(得分:0)

尝试一下:

import itertools

ip = "10.0.*.*"

output = [[int(x)] if x != '*' else [i for i in range(256)] for x in ip.split(".")]
print(list(itertools.product(*output)))

# >> [(10, 0, 0, 0), (10, 0, 0, 1), (10, 0, 0, 2), ..., (10, 0, 255, 254), (10, 0, 255, 255)]
  

更多内容:list comprehensionsitertools

答案 1 :(得分:0)

您可以使用ipaddress库。

def ip_range(wildcard):
    mask = 32 - wildcard.count('*') * 8
    network = ipaddress.ip_network('{}/{}'.format(wildcard.replace('*', '0'), mask))
    return network.hosts()

此函数将返回ipaddress.IPv4Address个对象的生成器。

用法:

>>> ip_range('10.0.0.*')
<generator object _BaseNetwork.hosts at 0x105ece7c8>
>>> list(map(str, _))
['10.0.0.1',
 '10.0.0.2',
 '10.0.0.3',
 ...
 '10.0.0.253',
 '10.0.0.254']