Veamos cómo extraer direcciones IP de un archivo usando Python.
Algoritmo:
- Importe el módulo re para la expresión regular .
- Abra el archivo usando la función open().
- Lea todas las líneas del archivo y guárdelas en una lista.
- Declare el patrón para las direcciones IP. El patrón de expresiones regulares es:
r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'
- Para cada elemento de la lista, busque el patrón utilizando la función de búsqueda(), almacene las direcciones IP en una lista.
- Muestra la lista que contiene las direcciones IP.
El archivo a procesar es test.txt:
python3
# importing the module import re # opening and reading the file with open('C:/Users/user/Desktop/New Text Document.txt') as fh: fstring = fh.readlines() # declaring the regex pattern for IP addresses pattern = re.compile(r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})') # initializing the list object lst=[] # extracting the IP addresses for line in fstring: lst.append(pattern.search(line)[0]) # displaying the extracted IP addresses print(lst)
Producción :
El programa Python anterior muestra cualquier tipo de dirección IP presente en el archivo. También podemos mostrar las direcciones IP válidas .
Reglas para una dirección IP válida:
- Los números deben estar en un rango de 0-255
- Debe constar de 4 celdas separadas por ‘.’
La expresión regular para direcciones IP válidas es:
((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5] |2[0-4][0-9]|[01]?[0-9][0-9]?)
Explicación de la expresión regular utilizada para una IP válida:
Como no podemos usar el rango 0-255 en expresiones regulares, dividimos el mismo en 3 grupos:
- 25[0-5]: representa números del 250 al 255
- 2[0-4][0-9]: representa números del 200 al 249
- [01]?[0-9][0-9]?- representa números del 0 al 199
El archivo a procesar es test2.txt:
python3
# importing the module import re # opening and reading the file with open('test2.txt') as fh: string = fh.readlines() # declaring the regex pattern for IP addresses pattern =re.compile('''((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.) {3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)''') # initializing the list objects valid =[] invalid=[] # extracting the IP addresses for line in string: line = line.rstrip() result = pattern.search(line) # valid IP addresses if result: valid.append(line) # invalid IP addresses else: invalid.append(line) # displaying the IP addresses print("Valid IPs") print(valid) print("Invalid IPs") print(invalid)
Producción :
Publicación traducida automáticamente
Artículo escrito por yojanabavkar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA