Ant*_*nko 127 html python ipython jupyter-notebook
是否可以将渲染的HTML输出嵌入到iPython输出中?
一种方法是使用
from IPython.core.display import HTML
HTML('<a href="http://example.com">link</a>')
Run Code Online (Sandbox Code Playgroud)
或(IPython多线单元别名)
%%html
<a href="http://example.com">link</a>
Run Code Online (Sandbox Code Playgroud)
哪个返回格式化的链接,但是
HTML()
在列表或pandas
打印表格中渲染对象.你可以做df.to_html()
,但没有在细胞内建立链接.如何克服这些缺点并使iPython输出更具交互性?
Har*_*mon 191
这似乎对我有用:
from IPython.core.display import display, HTML
display(HTML('<h1>Hello, world!</h1>'))
Run Code Online (Sandbox Code Playgroud)
诀窍是将它包装在"显示器"中.
资料来源:http://python.6.x6.nabble.com/Printing-HTML-within-IPython-Notebook-IPython-specific-prettyprint-tp5016624p5016631.html
duh*_*ime 18
前段时间,Jupyter笔记本开始从HTML内容中删除JavaScript [ #3118 ].
如果您想立即在页面上嵌入带有JavaScript的HTML页面,最简单的方法是将您的HTML上传到S3中的Amazon Web Services"存储桶",更改该存储桶上的设置以使存储桶成为主机静态网站,然后在笔记本中使用Iframe组件:
from IPython.display import IFrame
IFrame(src='./nice.html', width=700, height=600)
Run Code Online (Sandbox Code Playgroud)
这将在iframe中呈现您的HTML内容和JavaScript,就像您可以在任何其他网页上一样:
from IPython.display import IFrame
IFrame(src='https://s3.amazonaws.com/duhaime/blog/visualizations/isolation-forests.html', width=700, height=600)
Run Code Online (Sandbox Code Playgroud)
Udi*_*Udi 11
相关:构建类时,def _reper_html_(self): ...
可用于创建其实例的自定义HTML表示:
class Foo:
def _repr_html_(self):
return "Hello <b>World</b>!"
o = Foo()
o
Run Code Online (Sandbox Code Playgroud)
将呈现为:
你好世界!
有关更多信息,请参阅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
Run Code Online (Sandbox Code Playgroud)
将呈现:
- ☐买牛奶
- ☐做作业
- ☑玩视频游戏
扩展@Harmon上面,看起来你可以将display
和print
语句结合在一起......如果你需要的话.或者,也许将整个HTML格式化为一个字符串然后使用显示更容易.无论哪种方式,很好的功能.
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>'))
Run Code Online (Sandbox Code Playgroud)
输出如下:
这是一个链接:
一些印刷文字......
这里的段落文字......