2012-12-07 48 views
15

我喜歡IPython的Markdown單元格以將HTML和其他豐富的內容合併到筆記本電腦中。我想知道是否可以在輸出單元格中格式化命令輸出。使輸出單元格像Markdown

這裏是我的函數輸出HTML之一:上述

print_html(): 
     print """ 
     <h2>Matplotlib's 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代碼,如果放置在降價(輸入)單元,產生好的鏈接到Matplotlib庫。但在輸出單元中,它只是純文本。任何方式使它豐富的內容?

+0

解決方案至今只爲您直接從IPython中調用函數的工作 - 如果我們想呈現在打印HTML /從內部被稱爲測井方法一個函數? – Peter

回答

16

在這裏找到一個解決方案: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。

+1

由於鏈接郵件指出,您需要導入HTML如下: from IPython.core.display import HTML – GermanK

+0

感謝您改進此答案! –

+0

但你不能混合一些打印。所以就像製作標題並在 – Norfeldt

4

只是增加一些額外的功能,你的代碼示例

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

+0

很高興看到花式功能! –

7

一個莫名其妙更先進的解決方案最近發表的博客文章在這裏:

http://guido.vonrudorff.de/ipython-notebook-code-output-as-markdown/

它創建並註冊一個新的IPython魔術%%asmarkdown。您使用此命令添加的每個代碼單元格的輸出將呈現爲純粹的降格單元格。使用原題的內容,下面會像預期的那樣:

%%asmarkdown 
print """ 
<h2>Matplotlib's 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> 
""" 
+1

這工作超級輕鬆。 python 3用戶的一個小例外是,從'io import StringIO'中添加'from stringIO import StringIO'而不是''。 – josh

+0

這是最能解答原始問題的解決方案。 –

相關問題