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

问题描述 投票:0回答:2

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

示例

每个笔记本都包含对目录

foo
中的外部文件的引用。

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

但是,

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

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

接近

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

python windows visual-studio-code jupyter-notebook jupyter
2个回答
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

0
投票

老问题,但我和OP有同样的问题。不需要 WSL 的 Windows 解决方案是使用 Ultraedit 的替换文件命令。在批量替换 ipynb 文件中的文本后,笔记本仍然对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.