如何在Jupyter Notebook输出单元格中禁用换行?

Som*_*ura 5 word-wrap python-3.x output jupyter-notebook

默认情况下,Jupyter笔记本的输出单元格中的较长文本行将被换行。如何停止这种行为?

小智 10

如果您不想弄乱配置文件,您可以通过调用 IPython.core.display 函数来临时修改笔​​记本的行为。然后添加@atevm 建议的 CSS:

from IPython.core.display import display, HTML
display(HTML("<style>div.output_area pre {white-space: pre;}</style>"))

for line in range(5):
    for num in range(70):
        print(f" {num}", end="")
    print()
Run Code Online (Sandbox Code Playgroud)


Lui*_*raz 10

您可以使用 html magic 命令。通过检查输出单元格来检查 CSS 选择器是否正确,然后相应地编辑以下内容。

%%html
<style>
div.output_area pre {
    white-space: pre;
}
</style>
Run Code Online (Sandbox Code Playgroud)


ate*_*evm 5

我可以通过custom/custom.css在 Jupyter 用户配置中的文件中添加一个简单的 CSS 规则来解决这个问题:

/*Disable code output line wrapping*/
div.output_area pre {
    white-space: pre;
}
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述

选择规则的代码输出区域的预格式化文本区域(CSS 属性集)div.output_area preprewhite-space属性规定浏览器应如何在选定的 HTML 元素中显示空格,其pre值是浏览器仅在换行符\n<br>元素处中断。

根据Can I Use,此 CSS 在我的 Firefox v70.0 和 Chorme v78.0.3904.97 上渲染良好(带有精细的水平滚动条),该white-space: pre属性和值应该适用于所有现代桌面浏览器。

您可以通过运行以下 shell 命令来找出配置所在的位置:

jupyter --config
Run Code Online (Sandbox Code Playgroud)

如果您想进行进一步的样式修改,只需在 Jupyter Notebook 选项卡上使用您最喜欢的浏览器的检查器即可。您可以在其中修改 CSS,而不会产生永久影响。

JupyterLab 更新

正如 kiesel 评论的那样:在 JupyterLab 中,父 div 的类更改为jp-OutputArea-output. 然而还有另一个问题:Jupyter Lab 不读取custom/custom.css文件。有两种方法可以解决这个问题。

1.(脏,快)编辑正在使用的主题。

就我而言,我编辑了该~/miniconda3/envs/< env name >/share/jupyter/lab/themes/@jupyterlab/theme-dark-extension/index.css文件并添加了以下代码。

jupyter --config
Run Code Online (Sandbox Code Playgroud)

当然,此修复仅适用于您编辑主题 index.css 的一个特定环境。因此我不推荐它。

2.(干净,慢)使用支持自定义 CSS 的扩展

这位好心的家伙为 Jupyter Lab制作了一个主题,它允许您包含自定义 CSS 文件。