如何利用 notedown 完成 ipynb与markdown之间的格式转换?

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用 notedown 完成 ipynb与markdown之间的格式转换?相关的知识,希望对你有一定的参考价值。

简 介: 使用Convert IPython Notebooks to markdown (and back)中的downnote可以方便将IPYNB与Markdown格式进行转换。本文对于notedown软件的使用进行介绍和测试。但是如果使用notedown对于来自于CSDN的Markdown进行转换的时候,需要将CSDN中的Markdown多于的个数进行过滤。

关键词 notedownipynbmarkdown

notedown软件
目 录
Contents
安装与使用
初步运行notedown
测试示例
IPYNB-Markdown
Markdown-IPYNB
总 结

 

§01 notedown软件


  Github上的 Convert IPython Notebooks to markdown (and back) 除了 notedown 软件包用于在 Ipython notebookMarkdown文档进行转换工具。

1.1 安装与使用

1.1.1 安装notedown

  • 直接安装:
pip install notedown
  • 安装Github最新版本:
pip install https://github.com/aaren/notedown/tarball/master

1.1.2 notedown应用

  应用的基本命令:

(1)Markdown→IPYNB

notedown input.md > output.ipynb

(2)IPYNB→Markdown

 Ⅰ.去除输出

  将IPYNB中的所有的输出去掉,其余部分存储在Markdown文档中:

notedown input.ipynb --to markdown --strip > output.md
 Ⅱ.带有输出

  下面是将notebook文档中的所有输出存储在输出JSON格式保持不变:

notedown input.ipynb --to markdown > output_with_outputs.md

  之所以将Notebook的输出保存在 Markdown中JSON的格式中,是方便将来将该文档重新转换成Notebook的格式。也就是你可以在Markdown文档中进行编辑,再将其转换成IPYNB格式。 在Jupyter Notebook对于IPYNB文件稍微玩耍之后,还可以再次转换成Markdown文档。

  下面是将Markdown中的JSON格式的输出内容都去除。

notedown with_output_cells.md --to markdown --strip > no_output_cells.md

1.1.3 运行Ipython

notedown notebook.md --run > executed_notebook.ipynb

  其它notedown的特性,请参见 Github上的原始文档 吧。

1.2 初步运行notedown

  在Windows命令窗口可以直接运行notedown命令。

▲ 图1.2.1 在Windows的Cmd命令窗口运行Notedown

  运行notedown对应的输出。

usage: notedown [-h] [-o [OUTPUT]] [--from notebook,markdown]
                [--to notebook,markdown] [--run] [--timeout TIMEOUT]
                [--strip] [--precode PRECODE [PRECODE ...]] [--knit [KNIT]]
                [--rmagic] [--nomagic] [--render] [--template TEMPLATE]
                [--match MATCH] [--examples] [--version] [--debug]
                [input_file]

Create an IPython notebook from markdown.

positional arguments:
  input_file            markdown input file (default STDIN)

optional arguments:
  -h, --help            show this help message and exit
  -o [OUTPUT], --output [OUTPUT]
                        output file, (default STDOUT). If flag used but no
                        file given, use the name of the input file to
                        determine the output filename. This will OVERWRITE if
                        input and output formats are the same.
  --from notebook,markdown
                        format to convert from, defaults to markdown or file
                        extension
  --to notebook,markdown
                        format to convert to, defaults to notebook or file
                        extension. Setting --render forces this to 'markdown'
  --run, --execute      run the notebook, executing the contents of each cell
  --timeout TIMEOUT     set the cell execution timeout (in seconds)
  --strip               strip output cells
  --precode PRECODE [PRECODE ...]
                        additional code to place at the start of the notebook,
                        e.g. --pre '%matplotlib inline' 'import numpy as np'
  --knit [KNIT]         pre-process the markdown with knitr. Default chunk
                        options are 'eval=FALSE' but you can change this by
                        passing a string. Requires R in your path and knitr
                        installed.
  --rmagic              autoload the rmagic extension. Synonym for --precode
                        '%load_ext rpy2.ipython'
  --nomagic             disable code magic.
  --render              render outputs, forcing markdown output
  --template TEMPLATE   template file
  --match MATCH         determine kind of code blocks that get converted into
                        code cells. choose from 'all' (default), 'fenced',
                        'strict' or a specific language to match on
  --examples            show example usage
  --version             print version number
  --debug               show logging output

Example: notedown some_markdown.md > new_notebook.ipynb

 

§02 试示例


  面测试notedown软件转换的效果。

2.1 IPYNB→Markdown

  在 如何利用 nbconvert将 IPYNB文档转换 Markdown文档? 中利用 nbconvertipynb文档转换成markdown ,但是nbconvert在将来的ipython不再进行支持,所以利用notedown可以完成文档转换。

2.1.1 转换文档

  IPYNB文档来自于 飞桨AI Studio - 人工智能学习与实训社区 中的 基于自监督学习目标检测为标签生成 的main.ipynb文档。

notedown main.ipynb --to markdown >main1.md

  在本目录下生成了 main1.md。

(1)文件格式问题

  上述文档通过CSDN的 Markdown导入文档,可以看到存在一些问题,主要是图像引用出现问题。这是由于AI Studio中的图片在CSDN无法进行现实问题。

▲ 图2.1.1 图片引用出现了问题

2.2 Markdown→IPYNB

  命令格式:

notedown main.md >main11.ipynb

2.2.1 转换来自IPYNB的文档

  下面是把IPYNB文档通过nbconvert转换生成的Markdown重新转换成Markdown文档。

  转换生成对应的 main11.ipynb.

  将main11.ipynb文档导入BML Codelab环境打开,可以看到显示是正确的。

▲ 图2.2.1 将IPYNB文档导入BML CodeLab中

2.2.2 转换来自CSDN文档

  转换文档选择 CSDN上博文测试录制的电话拨码声音信号在发送过程中的问题 ,使用CSDN的导出,将其导出为“phone.md”,然后使用notedown将其进行转换。

notedown phone.md >phone.ipynb

  将生成的phone.ipynb导入到 BML Codelab中,使用其Notebook打开。可以看到:

  • Code Cell与Markdown文本可以很好地分开,包括原来Markdown中的格式修饰都显示正常;
  • 错误:原来在CSDN下的对于图片尺寸,居中显示修饰在Notebook无法适应;

▲ 图2.2.2 Notebook查看CSDN转换IPYNB文档

  因此,需要对于CSDN中多于的修饰的格式进行过滤,然后再使用notedown进行转换。

 

  结 ※


  使Convert IPython Notebooks to markdown (and back)中的downnote可以方便将IPYNB与Markdown格式进行转换。本文对于notedown软件的使用进行介绍和测试。

  但是如果使用notedown对于来自于CSDN的Markdown进行转换的时候,需要将CSDN中的Markdown多于的个数进行过滤。


■ 相关文献链接:

● 相关图表链接:

以上是关于如何利用 notedown 完成 ipynb与markdown之间的格式转换?的主要内容,如果未能解决你的问题,请参考以下文章

jupyter通过notedown使用markdown

如何利用 nbconvert将 IPYNB文档转换 Markdown文档?

如何打开.ipynb文件

.ipynb文件与.py文件之间的切换互用

如何打开.ipynb文件

如何在jupyter notebook中运行markdown文件(脚本代码)