如何在jupyter笔记本中批量编辑文本?

时间:2017-11-03 00:05:00

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

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

示例

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

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

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

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

方法

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

1 个答案:

答案 0 :(得分:0)

你在* nix吗?然后sed会工作。

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

或者您可以使用vim argsaddargsdo

即,

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