如何利用 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

▲ 图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.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.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文档

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

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

 

  结 ※


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

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


■ 相关文献链接:

● 相关图表链接:

ipynb 文件通常是由 Jupyter Notebook 创建的交互式笔记本文件,它包含了 Markdown 文档、代码块、图表等信息。为了将 ipynb 文件转换为普通的 Python (.py) 文件,你可以利用 Jupyter 提供的一个功能叫做 "导出"。 以下是转换步骤: ### 步骤 1: 打开你的 Jupyter Notebook 确保你已经安装了 Jupyter Notebook 或 Jupyter Lab,并且你的电脑上有一个可以运行 Jupyter 的环境。 ### 步骤 2: 导入并选择你想要保存为 .py 文件的 Notebook 从你的工作区打开包含你想要转换成 `.py` 文件的 Notebook。点击文件菜单,选择“导出”,然后点击“导出为.py”。 ### 步骤 3: 自定义输出设置 在弹出的导出对话框中,你可以看到一个选项让你指定输出路径和文件名。默认情况下,Jupyter 将会创建一个当前 Notebook 同名的 `.py` 文件,例如如果你的工作本名为 `example.ipynb`,则将会自动创建一个 `example.py` 文件。 ### 步骤 4: 确认导出 确认所有设置无误后,点击“导出”按钮开始转换过程。完成后,你应该可以在指定目录下找到生成的 `.py` 文件。 ### 注意事项: 1. **脚本一致性** : 转换过程中可能会遇到一些样式、注释和格式的问题。Jupyter Notebook 和普通Python脚本之间存在差异,在导出前尝试运行整个 Notebook 可能有助于发现和修正这类问题。 2. **输出文件命名** : 默认情况下,输出的文件名是基于原 Notebook 名称,如果有多于一个空格或其他特殊字符,它们会被替换掉,以避免Python文件名的限制。因此,确保你的文件名只包含字母数字字符以及下划线(如果需要的话)。 通过上述步骤,你可以方便地将包含复杂代码结构和注释的 Jupyter Notebook 转换成标准的 Python 脚本文件,这非常适用于分享代码、自动化脚本或者其他需要在没有 Jupyter Notebook 的环境中运行的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值