# -*- coding: UTF-8 -*-
#
# hay que instalar validators!!!
#
# pip install validators
#
import validators
import re
def ponerTagsEnUrls(text):
GRUBER_URLINTEXT_PAT = re.compile(ur'(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?\xab\xbb\u201c\u201d\u2018\u2019]))')
# buscamos todos los dominios
domains=[mgroups[0] for mgroups in GRUBER_URLINTEXT_PAT.findall(text) if validators.url(mgroups[0])]
# eliminamos duplicados
domains=list(set(domains))
# ordenamos descendente
domains.sort(reverse=True)
# separamos la cadena por espacios creando una lista
testList=text.split()
# recorremos cada una de las palabras
for i in range(len(testList)):
# recorremos cada uno de los dominios
for domain in domains:
# si se encuentra el dominio en la palabra
if testList[i].find(domain)>=0:
# reemplazamos el dominio por el dominio con el tag html
testList[i]=testList[i].replace(domain,"<a href='%s'>%s</a>" % (domain,domain))
break
# devolvemos la cadena modificada
return " ".join(testList)
textoDePrueba = 'Mira en la direccion http://example.com, hasta aqui:http://example.com. ahi encontraras lo que buscas... sino, seguro que en http://www... o http://www.lawebdelprogramador.com lo encuentras... tambien puedes mirar en los foros: http://www.lawebdelprogramador.com/foros/ de dicha web'
print ponerTagsEnUrls(textoDePrueba)