Regular Expressions In Python For Dissecting IP
I am currently trying to script a task for my Bind9 server. The goal is to have the user input an IP address in the following format: 192.168.90.150 I would then like Python to ta
Solution 1:
Validation: How to validate IP address in Python?
+plus
first, second, third, fourth = str(ipaddy).split('.')
Solution 2:
If you are reasonably sure the input is going to be an IPv4 in dotted form, you don't even need a regular expression:
assert possible_ip.count(".") == 3
ip_parts = possible_ip.split(".")
ip_parts = [int(part) for part in ip_parts]
first, second, third, fourth = ip_parts
Solution 3:
You can just use the builtin str functions.
try:
first, second, third, fourth = [int(s) for s in some_text.split('.')]
except ValueError as e:
print 'Not 4 integers delimited by .'
if not all (0 <= i <= 254 for i in (first, second, third, fourth)):
print 'Syntax valid, but out of range value: {} in "{}"'.format(i, some_text)
Solution 4:
Make a list of bytes:
>>> [ byte for byte in '192.168.90.150'.split('.') ]
['192', '168', '90', '150']
Solution 5:
def validate_and_split_ip(ip):
parts = ip.split('.')
if len(parts) != 4:
return None
for part in parts:
if not part.isdigit() or not 0<=int(part)<=255:
return None
return [int(part) for part in parts]
Test:
>>> validate_and_split_ip('123.123.0.255')
[123, 123, 0, 255]
>>> validate_and_split_ip('123.123.0.256') # Returns None
>>> validate_and_split_ip('123.123.123.a') # Returns None
You then have a list rather than 4 variables, which is more Pythonic and cleaner.
Post a Comment for "Regular Expressions In Python For Dissecting IP"