如何将任何 ip 地址转换为斜杠 24 前缀
How to convert any ip address to a slash 24 prefix
我有一个 IP 地址池,我想以斜杠 24 前缀的形式保存它们。
101.0.114.117|theavenueworkshop.com
10.2.0.95|storm8.com
10.2.0.96|prxy.net
10.2.0.99|fonality.com
10.2.0.9|rpb.ru
10.2.1.0|aiico.com
10.2.1.100|samasher.com
10.2.1.101|wps-inc.com
10.2.1.104|ufl.edu
10.2.0.6|waldorfford.com
10.2.0.71|inmobi.com
10.2.0.72|inmobi.com
10.2.0.75|amtrim.com
10.2.0.77|equifax.com
10.2.0.78|equifax.com
10.2.0.7|ppu.edu
10.2.0.83|enphg.com
10.2.0.86|3dna.io
10.2.0.87|nexica.com
所以我希望将这些转换为以下形式(通过将最后一位替换为零并向其添加斜杠 24):
101.0.114.0/24|theavenueworkshop.com
10.2.0.0/24|storm8.com
10.2.0.0/24|prxy.net
...
10.2.0.0/24|enphg.com
10.2.0.0/24|3dna.io
10.2.0.0/24|nexica.com
有人可以帮忙吗?
你可以使用re.sub
和积极的look-ahead:
>>> s="""101.0.114.117|theavenueworkshop.com
10.2.0.95|storm8.com
10.2.0.96|prxy.net
10.2.0.99|fonality.com
10.2.0.9|rpb.ru"""
>>> print re.sub(r'\d+(?=\|)',r'0/24',s)
101.0.114.0/24|theavenueworkshop.com
10.2.0.0/24|storm8.com
10.2.0.0/24|prxy.net
10.2.0.0/24|fonality.com
10.2.0.0/24|rpb.ru
如果你想按 |
拆分你的字符串,你可以执行以下操作:
>>> l=[i.split('|')[0] for i in s.split('\n')]
>>> ['.'.join(i.split('.')[:3]+['0/24']) for i in l]
['101.0.114.0/24', '10.2.0.0/24', '10.2.0.0/24', '10.2.0.0/24', '10.2.0.0/24']
您可以使用 re.sub() 和模式 \.[0-9]*[|]
来查找需要替换为文本 .0/24|
的文本
line = '101.0.114.117|theavenueworkshop.com'
print re.sub("\.[0-9]*[|]",'.0/24|', line)
#101.0.114.0/24|theavenueworkshop.com
我有一个 IP 地址池,我想以斜杠 24 前缀的形式保存它们。
101.0.114.117|theavenueworkshop.com
10.2.0.95|storm8.com
10.2.0.96|prxy.net
10.2.0.99|fonality.com
10.2.0.9|rpb.ru
10.2.1.0|aiico.com
10.2.1.100|samasher.com
10.2.1.101|wps-inc.com
10.2.1.104|ufl.edu
10.2.0.6|waldorfford.com
10.2.0.71|inmobi.com
10.2.0.72|inmobi.com
10.2.0.75|amtrim.com
10.2.0.77|equifax.com
10.2.0.78|equifax.com
10.2.0.7|ppu.edu
10.2.0.83|enphg.com
10.2.0.86|3dna.io
10.2.0.87|nexica.com
所以我希望将这些转换为以下形式(通过将最后一位替换为零并向其添加斜杠 24):
101.0.114.0/24|theavenueworkshop.com
10.2.0.0/24|storm8.com
10.2.0.0/24|prxy.net
...
10.2.0.0/24|enphg.com
10.2.0.0/24|3dna.io
10.2.0.0/24|nexica.com
有人可以帮忙吗?
你可以使用re.sub
和积极的look-ahead:
>>> s="""101.0.114.117|theavenueworkshop.com
10.2.0.95|storm8.com
10.2.0.96|prxy.net
10.2.0.99|fonality.com
10.2.0.9|rpb.ru"""
>>> print re.sub(r'\d+(?=\|)',r'0/24',s)
101.0.114.0/24|theavenueworkshop.com
10.2.0.0/24|storm8.com
10.2.0.0/24|prxy.net
10.2.0.0/24|fonality.com
10.2.0.0/24|rpb.ru
如果你想按 |
拆分你的字符串,你可以执行以下操作:
>>> l=[i.split('|')[0] for i in s.split('\n')]
>>> ['.'.join(i.split('.')[:3]+['0/24']) for i in l]
['101.0.114.0/24', '10.2.0.0/24', '10.2.0.0/24', '10.2.0.0/24', '10.2.0.0/24']
您可以使用 re.sub() 和模式 \.[0-9]*[|]
来查找需要替换为文本 .0/24|
line = '101.0.114.117|theavenueworkshop.com'
print re.sub("\.[0-9]*[|]",'.0/24|', line)
#101.0.114.0/24|theavenueworkshop.com