【问题标题】:How to batch edit text in jupyter notebooks?如何批量编辑jupyter笔记本中的文本?
【发布时间】:2017-11-03 00:04:59
【问题描述】:

问题:我有几十个 jupyter 笔记本,它们都有一些需要替换的文本。

示例

每个笔记本都包含对foo 目录中外部文件的引用。

 ./
  |- foo
  |   |- image.jpg
  |   |- ...
  |- notebooks
      |- file1.ipynb
      |- file2.ipynb
      |- file3.ipynb
      |- ...

但是,foo 目录很快将重命名为 bar,从而使笔记本中的关联链接成为孤立的。因此,我需要将每个笔记本中的所有链接从旧的 foo 目录名称重命名为新的 bar 名称,例如foo/image.jpgbar/image.jpg

问题:一一打开会很费时间。是否有高效安全的解决方案可以批量编辑多个 jupyter notebook 的文本?

接近

由于笔记本本质上是 json 文件,我正在考虑在 VSCode 中进行简单的搜索和替换。我在测试笔记本上试过这个,它似乎工作,但我不确定这种方法是否会以某种方式损坏文件。我感谢任何安全的建议。

【问题讨论】:

    标签: python windows visual-studio-code jupyter-notebook jupyter


    【解决方案1】:

    你在 *nix 上吗?然后 sed 就可以了。

    cd ./path/to/notebooks
    sed -i 's/foo/bar/g' *.ipynb
    

    或者你可以使用 vim argsadd 加上 argsdo

    即,

    vim
    :cd path/to/notebooks
    :arg *.ipynb
    :argdo %s/foo/bar/ge | update
    

    【讨论】:

    • 我使用的是 Windows,不熟悉 unix 工具。这会在不损坏我的笔记本的情况下安全地编辑吗?
    • 会的。 windows 10 现在支持 linux 子系统。顺便说一句,您应该将文件置于版本控制之下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 2020-05-17
    • 2016-07-24
    相关资源
    最近更新 更多