📜  显示全长 jupyter - Python (1)

📅  最后修改于: 2023-12-03 14:55:11.939000             🧑  作者: Mango

显示全长 jupyter - Python

Jupyter Notebook 是一个非常流行的交互式数据科学环境,不过默认情况下,它只显示一个代码单元格或者 markdown 单元格的一部分,当单元格内容呈现出过长或复杂的时候,就极易导致代码或者文本显示不全。

本文将介绍几种在 Jupyter Notebook 中显示全长代码或文本的方法。

方法 1:使用 jupyter-themes

jupyter-themes 是一款用于 Jupyter Notebook 界面美化的插件,其提供了许多的主题和自定义样式以及当下流行的黑暗模式,同时它也提供了一个显示全长的功能。

安装 jupyter-themes:

!pip install jupyterthemes

启用 jupyter-themes 所提供的显示全长的功能代码:

from IPython.core.display import HTML

def load_custom_libraries():
    if not 'html_loaded' in locals():
        print("Loading custom libraries...")
        display(HTML("<style>.container { width:100% !important; }</style>"))
        html_loaded = True

这个方法的缺点是,它会改变其他元素的样式,如果你使用 jupyter-themes 美化了你的 Jupyter Notebook 界面,这个方法基本上就是一定要用的。

方法 2:使用 nbextensions

Nbextensions 是 jupyter-contrib-nbextensions 插件的一个集合。其中,有一个插件叫做 scroll_down_main,该插件可以自动调整单元格的大小以显示所有的内容,不过需要注意的是,它显示的是活动单元格,而不是文档中的所有单元格。

!pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable scroll_down_main/main --user

安装并启用后,刷新浏览器,此时在 Jupyter Notebook 的工具栏里会多一个 Nbextensions 的标签,在其中启用 scroll_down_main 插件即可。

方法 3:使用 autopep8

autopep8 是 Python 代码风格自动修复工具之一。它可以自动化地格式化 Python 代码,并支持自动换行。与其他方法不同的是,autopep8 是通过将代码单元格的内容复制到剪贴板中并自动修复代码后将其粘贴回 Jupyter Notebook 中来显示全长。

安装 autopep8:

!pip install autopep8

在代码单元格末尾输入以下代码,运行即可自动修复单元格内容并返回全长代码:

import os
from IPython.display import display, HTML
import subprocess

def show_full_code():
    current = !jupyter nbconvert --to=python {os.getcwd()+"/"+os.path.splitext(os.path.basename(os.getcwd()))[0]}.ipynb
    current_file = os.path.splitext(os.path.basename(os.getcwd()))
    subprocess.check_output(f"autopep8 -ivi --max-line-length=1000 {current_file[0]}.py")
    with open(f"{current_file[0]}.py") as file:
        txt = file.read()
    display(HTML('<code><pre>' + txt + '</pre></code>'))

以上是我的推荐方法,autopep8 能够自动换行,在绝大多数情况下,它能够显示全长且美观的代码。

以上三种方法中,你可以选择任意一种来在 Jupyter Notebook 中显示全长的代码和文本。