DCA*_*DCA 13 google-colaboratory
在 Google Collaboratoy (colab) 上作为 Notebook 工作,某些单元格会产生比屏幕分辨率更大的长行文本,因此它会显示一个没有换行的滚动条。
有谁知道如何在不使用滚动条的情况下激活文本换行以查看所有文本?
提前致谢。
问候,
通常在我自己的机器上,我将以下 css snippit 放在~/.jupyter/custom/custom.css文件中。
pre {
white-space: pre-wrap;
}
Run Code Online (Sandbox Code Playgroud)
但是,上述内容不适用于 google colab:我尝试创建一个文件/usr/local/share/jupyter/custom/custom.css,但这不起作用。
from IPython.display import HTML, display
def set_css():
display(HTML('''
<style>
pre {
white-space: pre-wrap;
}
</style>
'''))
get_ipython().events.register('pre_run_cell', set_css)
Run Code Online (Sandbox Code Playgroud)
说明:如Google Colab 高级输出中所述,get_ipython().events.register('pre_run_cell', <function name>)...
定义一个执行钩子,
set_css()每次执行单元格时自动加载它[在我们的例子中是我们的自定义函数]
我的解释是您需要指定'pre_run_cell'为 中的第一个参数events.register,它告诉events.register函数您希望在执行set_css()单元格内容之前运行您的自定义函数。
这个答案的灵感来自How to import CSS file into Google Colab notebook (Python3)
from IPython.display import HTML, display
def set_css():
display(HTML('''
<style>
pre {
white-space: pre-wrap;
}
</style>
'''))
get_ipython().events.register('pre_run_cell', set_css)
Run Code Online (Sandbox Code Playgroud)
正如 Bon Ryu 上面提到的,这应该可以解决问题。它将正确包装您的输出

我创建了一个函数来帮助解决这个问题。它适用于列表和字符串。
def set_wrap(N=100):
''' create a wrap function for list '''
def wrap(obj):
s = str(obj)
out = '<pre>'
while True:
if len(s) < N:
out += s
break
i = s.rfind(' ', 0, N)
if i==-1:
i = N
out += s[:i]+"\n"
s = s[i:]
out += "</pre>"
return out
''' register it '''
Formatter = get_ipython().display_formatter.formatters['text/html']
Formatter.for_type(list, wrap)
Formatter.for_type(str, wrap)
Run Code Online (Sandbox Code Playgroud)
您只需调用 即可使用它set_wrap(80)。
| 归档时间: |
|
| 查看次数: |
4702 次 |
| 最近记录: |