Código de Python - Poner tags de html en las urls de un texto

Imágen de perfil

Poner tags de html en las urls de un textográfica de visualizaciones


Python

Publicado el 28 de Abril del 2016 por xve
817 visualizaciones desde el 28 de Abril del 2016. Una media de 28 por semana
Este código convierte las urls (http://www.lawebdelprogramador.com) de un texto en enlaces html (<a href="http://www.lawebdelprogramador.com">http://www.lawebdelprogramador.com</a>) para poder mostrar en una pagina web.

Requerimientos

paquete validators (pip install validators)

Versión 1.0

Publicado el 28 de Abril del 2016gráfica de visualizaciones de la versión: Versión 1.0
818 visualizaciones desde el 28 de Abril del 2016. Una media de 28 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

Considero que el código no es muy óptimo, pero no he encontrado una mejor manera de realizarlo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# -*- 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)



Comentarios sobre la versión: Versión 1.0 (0)


No hay comentarios
 

Comentar la versión: Versión 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s3518