Создание выходных ячеек, таких как Markdown
Мне нравятся ячейки IPython Markdown для включения HTML и другого богатого контента внутри ноутбуков. Я хотел бы знать, можно ли форматировать вывод команды в ячейках вывода.
Вот одна из моих функций вывода HTML:
print_html():
print """
<h2>Matplotlib chart gallery (Click a chart to see the code to create it)</h2><br>
<div align="center"> <iframe title="Matplotlib Gallery" width="950"
height="250" src="http://matplotlib.org/gallery.html#api" frameborder="0"
allowfullscreen></iframe></div>
"""
HTML-код выше, если он помещен в ячейку markdown (input), создает хорошую ссылку на библиотеку Matplotlib. Но в выходной ячейке это просто текст. Любой способ сделать его богатым?
Ответы
Ответ 1
Нашел решение здесь: http://mail.scipy.org/pipermail/ipython-user/2012-April/009838.html
Задание решения здесь для ссылки:
Брайан Грейнджер:
"
Попросите функцию вернуть необработанный HTML, заключенный в HTML-объект:
from IPython.core.display import HTML
...
...
def foo():
raw_html = "<h1>Yah, rendered HTML</h1>"
return HTML(raw_html)
"
Теперь вызов foo() действительно дает богатый форматированный html, как я хотел.
Ответ 2
Как-то более продвинутое решение было недавно опубликовано в блоге:
http://guido.vonrudorff.de/ipython-notebook-code-output-as-markdown/
Создает и регистрирует новую магию IPython %%asmarkdown
. Вывод каждой кодовой ячейки, которую вы добавили с помощью этой команды, будет отображаться как чистые ячейки разметки. Используя содержимое исходного вопроса, следующее будет вести себя так, как ожидалось:
%%asmarkdown
print """
<h2>Matplotlib chart gallery (Click a chart to see the code to create it)</h2><br>
<div align="center"> <iframe title="Matplotlib Gallery" width="950"
height="250" src="http://matplotlib.org/gallery.html#api" frameborder="0"
allowfullscreen></iframe></div>
"""
Ответ 3
Просто добавьте некоторые дополнительные функции в пример кода
htmlContent = ''
def header(text):
raw_html = '<h1>' + str(text) + '</h1>'
return raw_html
def box(text):
raw_html = '<div style="border:1px dotted black;padding:2em;">'+str(text)+'</div>'
return raw_html
def addContent(raw_html):
global htmlContent
htmlContent += raw_html
# Example
addContent( header("This is a header") )
addContent( box("This is some text in a box") )
from IPython.core.display import HTML
HTML(htmlContent)
дает вам следующее:
![OUTPUT]()