Você não aceitou as outras soluções, talvez porque a saída delas não corresponda à "London and Germany" solicitada
O Modern Python pode lidar com endereços IP prontos para uso:
#! /usr/bin/env python3.4
# coding: utf-8
# also works on 2.7 after installing ipaddress from PyPI
import sys
from ipaddress import ip_address
print
ip_string = sys.argv[1]
if sys.version_info < (3,):
ip_string = ip_string.decode('utf-8')
ip = ip_address(ip_string)
locs = []
for line in open('input'):
try:
loc, rest = line.split(':')
except ValueError:
try:
if sys.version_info < (3,):
sr, er = map(ip_address, [x.decode('utf-8') for x in line.rstrip().split('-')])
else:
sr, er = map(ip_address, line.rstrip().split('-'))
if sr < ip < er:
locs.append(loc)
except ValueError:
print 'error in input line:', repr(line)
break
if len(locs) > 2:
locs = [', '.join(locs[:-1]), locs[-1]]
print(' and '.join(locs))
Isso imprime os locais encontrados e coloca " and
" entre os dois últimos locais encontrados e " ,
" entre todos os outros (quando aplicável): por exemplo, London, Paris and Germany
Supõe-se que os dados estejam em um arquivo chamado input
, torne o script executável ou chame com python scriptname 172.25.2.32