如何利用 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多于的个数进行过滤。
关键词
: notedown,ipynb,markdown
§01 notedown软件
Github上的 Convert IPython Notebooks to markdown (and back) 除了 notedown 软件包用于在 Ipython notebook 与 Markdown文档进行转换工具。
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文档? 中利用 nbconvert
对ipynb
文档转换成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多于的个数进行过滤。
■ 相关文献链接:
- Convert IPython Notebooks to markdown (and back)
- notedown
- Ipython notebook
- 如何利用 nbconvert将 IPYNB文档转换 Markdown文档?
- 飞桨AI Studio - 人工智能学习与实训社区
- 测试录制的电话拨码声音信号在发送过程中的问题
● 相关图表链接:
以上是关于如何利用 notedown 完成 ipynb与markdown之间的格式转换?的主要内容,如果未能解决你的问题,请参考以下文章