I am struggling when trying to replace string’s portions from a list, using a dictionary. I have a list with network IPs and subnet masks:
10.10.1.20/255.255.255.0 40.50.1.10/255.255.255.224 18.1.14.50/255.255.255.128 18.1.28.50/255.255.255.248
My idea is to create a dictionary to replace the subnet masks into prefix masks, for example:
10.10.1.20/24 40.50.1.10/27 18.1.14.50/25 18.1.28.50/29
I am getting these IPs after using a small code to get IPs from a huge document, and my current code looks like this:
dict = {'255.255.255.0':'24','255.255.255.255':'32'} #I will add here all subnet masks that I need.
with open(r'C:UsersrobertSubnets.txt') as file:
contents = file.read().split('n')
subnet = []
for ele in contents:
if ele.__contains__('IP/Netmask'):
subnet.append(ele.split(':')[1])
print(subnet) #This works fine and I can get all the IPs/Mask from the document in this format: 10.10.1.20/255.255.255.0
subnet[:]=[dict.get(e,'') for e in subnet]
print(subnet) #This does not print anything, because I do not know how to replace just a portion of the string
Advertisement
Answer
Try something like this:
my_dict = {'255.255.255.0':'24','255.255.255.255':'32'}
subnet = [item.split('/')[0]+'/'+my_dict.get(item.split('/')[1], '') for item in subnet]
This will also replace your subnet masks with empty strings if a corresponding prefix mask is not present in the dictionary.
Also dict is a keyword in python dont use it as variable names.