如何禁用 Jupyter 笔记本输出单元格中的换行?

How to disable line wrapping in Jupyter notebook output cells?

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

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

/*Disable code output line wrapping*/
div.output_area pre {
    white-space: pre;
}

结果:

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

根据 Can I Use white-space: pre [=42],对于我的 Firefox v70.0 和 Chorme v78.0.3904.97,此 CSS 呈现良好(具有精细的水平滚动条) =] 和 value 应该适用于所有现代桌面浏览器。

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

jupyter --config

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

如果您不想弄乱配置文件,可以通过调用 IPython.core.display 函数来修改 notebook ad hoc 的行为。然后添加@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()

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

%%html
<style>
div.output_area pre {
    white-space: pre;
}
</style>

我无法发表评论,所以我必须回答:也许 Jupyter 的最新版本有些不同。如果接受的答案不起作用,您可以尝试使用“jp-OutputArea-output”而不是“div.output_area”;例如

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

如果你有暗模式浏览器并且你不喜欢由此产生的较亮滚动条,你可以尝试在 Jupyter 中设置暗模式添加

display(HTML("<style>:root {color-scheme: dark;}</style>"))

参见: