Analizar direcciones IP desde txt

Estoy tratando de descargar un archivo txt que puedes encontrar aquí . Descargar el archivo no es un problema:

testfile = urllib.URLopener() testfile.retrieve(_proxy_list_download_, "proxies.txt") 

Pero el problema es que cuando se descarga, actúa raro. Cuando lo abro en cualquier editor de texto, puedo ver el contenido y las direcciones IP, pero cuando bash imprimir el contenido en la consola, imprime esto:

 212.3.183.210:8080; 0; 0; anonymous proxy; Italy; ; a; in); an Jose); ree download proxy IP 

Y cuando bash obtener direcciones IP desde allí, no hay ninguna dirección en la salida.

 with open('proxies.txt') as f: content = f.read() ip = re.findall( r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$", content ) 

Ya he probado otra expresión regular :

 r'([0-9]+)(?:\.[0-9]+){3}' 

Esta expresión regular devolvió solo números de 3 dígitos .

¿Tienes alguna idea de cómo analizar esos IPs?

EDITAR: Aquí está la copia + el texto pegado del editor de texto, pero en el editor todo está en una línea:

  # http://proxy-ip-list.com/ provides you this fresh txt proxy list to free download proxy IP # Date: Sat, 27 Jun 2015 12:53:02 +0000 39.166.95.9:8123; 0; 0; high-anonymous; China; 178.189.92.118:3129; 16.83; 405; high-anonymous; Austria; 198.2.202.33:8090; 8.05; 884; anonymous; United States (CA, San Jose); 171.96.152.89:8080; 0; 0; anonymous; Thailand; 153.149.104.76:80; 0; 0; anonymous; Japan (Tokyo); 106.187.52.191:80; 0; 0; anonymous proxy; Japan; 194.187.214.204:80; 0.91; 6374; anonymous proxy; Finland; 59.78.160.247:8080; 0; 0; anonymous; China (Shanghai); 61.156.3.166:80; 1.12; 1449; anonymous proxy; China (Jinan); 221.238.140.164:8080; 1.39; 257; anonymous; China (Tianjin); 117.178.157.107:8123; 8.44; 847; high-anonymous; China; 39.166.205.95:8123; 0; 0; high-anonymous; China; 117.163.216.8:8123; 4.21; 1577; high-anonymous; China; 189.31.143.250:3128; 0; 0; high-anonymous; Brazil; 183.89.84.82:8080; 0; 0; anonymous proxy; Thailand; 183.88.41.42:8080; 0; 0; anonymous; Thailand; 212.3.183.210:8080; 0; 0; anonymous proxy; Italy; 

Debe eliminar los anclajes, ya que una línea no contendrá solo una única dirección IP.

 ip = re.findall( r"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b", content ) 

segundo regex

 r'([0-9]+)(?:\.[0-9]+){3}' 

debe devolver el número de tres dígitos porque solo se capturan los primeros tres dígitos, el método re.findall devolvería las capturas primero, si las hubiera. Si no hay capturas, solo se devolverían las coincidencias. Al convertir el grupo de captura en un grupo sin captura, obtendrá el resultado deseado.

 r'\b[0-9]+(?:\.[0-9]+){3}\b'