我需要在Jupyter Notebook中渲染一些html表,为此我已经定义了自己的css样式。我希望它可以在任何PC上重复使用。
现在我需要在一个Jupyter单元格中运行这样的代码:
%%html
<style>
.output_wrapper, .output {
height:auto !important;
max-height: none;
}
.output_scroll {
box-shadow:none !important;
webkit-box-shadow:none !important;
}
.package_header {
width: 100%;
background-color: #0e2b59;
color: #ffffff;
font-size: 14px;
text-align: center;
padding-top: 8px;
padding-right: 8px;
padding-bottom: 8px;
padding-left: 8px;
}
.placeholder {
width: 100%;
background-color: #ffffff;
height: 6px;
}
.passed_test_table {
display: table;
width: 100%;
background-color: #ebffd3;
border-spacing: 5px;
}
# (...) rest of css classes omitted
</style>
但是我不希望将此style
存储在Jupyter Notebook中,而是存储在my_default_style.css等其他文件中,并以某种方式加载它,因此在Notebook中不会占用太多空间,使其不太可读。
是否可以从某些本地文件加载.css样式而不是直接在Jupyter Notebook单元格中运行它?
答案 0 :(得分:8)
如果您对所有笔记本的样式都适用,那么您可以将您的CSS存储在.jupyter/custom/custom.css
中,这将自动加载并覆盖任何默认样式。
另一种方法是做这样的事情:
from IPython.core.display import HTML
import urllib2
HTML(urllib2.urlopen('[url to your css file here').read())
(来自http://moderndata.plot.ly/custom-styling-for-ipython-notebooks-with-3-lines-of-code/)
将css文件存储在某处(例如在Github上)并下载并在运行笔记本时应用它。
如果您希望它完全是外部的,请使用custom.css
,但这适用于每个笔记本。如果你需要它只适用于一个笔记本,那么你必须在笔记本中指定它,但是有更简洁的方法(如上所述)。
答案 1 :(得分:2)
如果你在Python 3中使用Jupyter,那么就没有urllib2(它被合并到urllib中),上面的答案会给你错误ModuleNotFoundError: No module named 'urllib2'
。你可能想要这样的东西:
from IPython.display import HTML
from urllib.request import urlopen
html = urlopen("[url to your css file here]")
HTML(html.read().decode('utf-8'))
请注意,read()
返回字节编码,如果需要文本,则必须解码。
答案 2 :(得分:1)
这个答案可能最好是对Davies和Narasimhan早期答案的评论,但我缺乏发表评论的声誉。
from IPython.core.display import HTML
将起作用,并且是在早期版本的IPython中访问HTML显示功能的推荐方法。但在最近的版本中, public 显示API位于IPython.display
中(请参阅其文档字符串)。此模块公开了__all__
的{{1}}以及IPython.core.display
的{{1}}。值得注意的是,目前的IPython文档(The IPython API)并未单独公开记录__all__
。有关当前的IPython.lib.display
文档,请参阅:Module: display — IPython documentation。
所以推荐的IPython 5解决方案我认为是:
IPython.core.display