Ответ 1
Кажется, это работает для меня:
from IPython.core.display import display, HTML
display(HTML('<h1>Hello, world!</h1>'))
Хитрость заключается в том, чтобы обернуть ее и в "display".
Можно ли встраивать визуализированный вывод HTML в вывод IPython?
Одним из способов является использование
from IPython.core.display import HTML
HTML('<a href="#" onclick="location.href='http://example.com'; return false;">link</a>')
или (многострочный псевдоним IPython)
%%html
<a href="#" onclick="location.href='http://example.com'; return false;">link</a>
Которые возвращают отформатированную ссылку, но
HTML()
в, скажем, списке или печатной таблице pandas
. Вы можете сделать df.to_html()
, но без создания ссылок внутри ячеек.Как я могу преодолеть эти недостатки и сделать вывод IPython более интерактивным?
Кажется, это работает для меня:
from IPython.core.display import display, HTML
display(HTML('<h1>Hello, world!</h1>'))
Хитрость заключается в том, чтобы обернуть ее и в "display".
Некоторое время назад Jupyter Notebooks начал извлекать JavaScript из содержимого HTML [# 3118]. Вот два решения:
Обслуживание локального HTML
Если вы хотите встроить HTML-страницу с JavaScript на свою страницу сейчас, проще всего сохранить свой HTML файл в каталоге с записной книжкой, а затем загрузить HTML следующим образом:
from IPython.display import IFrame
IFrame(src='./nice.html', width=700, height=600)
Обслуживание удаленного HTML
Если вы предпочитаете размещенное решение, вы можете загрузить свою HTML-страницу в "корзину" Amazon Web Services на S3, изменить настройки этого контейнера, чтобы сделать хост-сайт статическим веб-сайтом, а затем использовать Компонент Iframe в вашей записной книжке:
from IPython.display import IFrame
IFrame(src='https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html', width=700, height=600)
Это отобразит ваш HTML-контент и JavaScript в iframe, как и на любой другой веб-странице:
<iframe src='https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html', width=700, height=600></iframe>
Связанный: при создании класса def _reper_html_(self):...
может использоваться для создания пользовательского представления HTML его экземпляров:
class Foo:
def _repr_html_(self):
return "Hello <b>World</b>!"
o = Foo()
o
будет отображаться как:
Привет, мир !
Для получения дополнительной информации обратитесь к документации IPython.
Продвинутый пример:
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
Окажет:
- ☐ купить молоко
- ☐ делать домашнее задание
- ☑ играть в видеоигры
Развернувшись выше на @Harmon, похоже, что вы можете комбинировать операторы display
и print
вместе... если вам нужно. Или, может быть, проще просто отформатировать весь HTML-код в одну строку, а затем использовать отображение. В любом случае, приятная особенность.
display(HTML('<h1>Hello, world!</h1>'))
print("Here 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>'))
Выводит что-то вроде этого:
Вот ссылка:
еще немного печатного текста...
Текст абзаца здесь...
Я искал конкретный ответ для ноутбука Jupyter и не смог его найти, поэтому оставлю это здесь:
Ячейки уценки ноутбука Jupyter отображают HTML-теги:
<a href="your_link_here.com">Your text here!</a>