python - notebook - jupyter magic
¿Cómo incrustar HTML en la salida de iPython? (5)
¿Es posible incrustar la salida HTML renderizada en la salida de iPython?
Una forma es usar
from IPython.core.display import HTML
HTML(''<a href="http://example.com">link</a>'')
o (alias de celda multilínea IPython)
%%html
<a href="http://example.com">link</a>
Que devuelven un enlace formateado, pero
- Este enlace no abre un navegador con la propia página web desde la consola . Sin embargo, los portátiles IPython admiten la reproducción honesta.
- No tengo conocimiento de cómo representar un objeto
HTML()
dentro de, por ejemplo, una lista o una tabla impresa depandas
. Puedes hacerdf.to_html()
, pero sin hacer enlaces dentro de las celdas. - Esta salida no es interactiva en la consola de PyCharm Python (porque no es QT).
¿Cómo puedo superar estas deficiencias y hacer que la salida de iPython sea un poco más interactiva?
Al expandirse en @Harmon arriba, parece que puede combinar la display
y print
declaraciones de print
juntas ... si lo necesita. O tal vez es más fácil simplemente formatear todo su HTML como una cadena y luego usar la pantalla. De cualquier manera, buena característica.
display(HTML(''<h1>Hello, world!</h1>''))
print("Here''s a link:")
display(HTML("<a href=''http://www.google.com'' target=''_blank''>www.google.com</a>"))
print("some more printed text ...")
display(HTML(''<p>Paragraph text here ...</p>''))
Produce algo como esto:
¡Hola Mundo!
Aquí hay un enlace:
un poco más de texto impreso ...
Párrafo de texto aquí ...
Estaba buscando una respuesta específica para el cuaderno Jupyter y no pude encontrar una, así que solo dejo esto aquí:
Jupyter notebook markdown cells render html tags:
<a href="your_link_here.com">Your text here!</a>
Esto parece funcionar para mí:
from IPython.core.display import display, HTML
display(HTML(''<h1>Hello, world!</h1>''))
El truco es envolverlo en "pantalla" también.
Hace algún tiempo, Jupyter Notebooks comenzó a eliminar JavaScript del contenido HTML [ #3118 ].
Si desea incrustar una página HTML con JavaScript en su página ahora, lo más fácil es cargar su HTML en un "cubo" de servicios web de Amazon en S3, cambiar la configuración en ese cubo para que el cubo sea el anfitrión. sitio web estático, luego use un componente Iframe en su cuaderno:
from IPython.display import IFrame
IFrame(src=''https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html'', width=700, height=600)
Esto representará su contenido HTML y JavaScript en un iframe, al igual que puede hacerlo en cualquier otra página web:
<iframe src=''https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html'', width=700, height=600></iframe>
Relacionado: Al construir una clase, def _reper_html_(self): ...
se puede usar para crear una representación HTML personalizada de sus instancias:
class Foo:
def _repr_html_(self):
return "Hello <b>World</b>!"
o = Foo()
o
se renderizará como:
Hola mundo
Para más información consulte los documentos de IPython .
Un ejemplo avanzado:
from html import escape # Python 3 only :-)
class Todo:
def __init__(self):
self.items = []
def add(self, text, completed):
self.items.append({''text'': text, ''completed'': completed})
def _repr_html_(self):
return "<ol>{}</ol>".format("".join("<li>{} {}</li>".format(
"☑" if item[''completed''] else "☐",
escape(item[''text''])
) for item in self.items))
my_todo = Todo()
my_todo.add("Buy milk", False)
my_todo.add("Do homework", False)
my_todo.add("Play video games", True)
my_todo
Renderizará:
- ☐ comprar leche
- ☐ hacer la tarea
- ☑ jugar videojuegos