Extraiga la dirección IP del archivo usando Python

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: 
 

prueba.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: 
 

prueba2.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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *