YutaKaのPython教室

Python の文法やライブラリ、API、環境構築について画像・動画・ソースコード付きで徹底解説!

Jupyter notebook(ipynb)をMarkdownに変換する方法

Jupyter notebookJupyter labで作成したipynbファイルMarkdown形式に変換する3つの方法を紹介します。

  1. Jupyter notebook/labで手作業でエクスポート
  2. Anacondaのプロンプト画面から実行(nbconvert使用)
  3. Pythonスクリプトで変換(nbconvert使用)

1.の方法では追加のインストール作業などは必要ないので手軽に変換できますが、手作業なので少し面倒です。

2.と3.の方法の場合は、nbconvertモジュールを使用します。バッチファイル化やpythonスクリプト化ができるのでおススメです。

Jupyter notebook/labで手動エクスポート

手動でエクスポートする場合は、特に設定もなくポチポチするだけなので簡単です。 ただ、自動化はできないので、数回しか変換しないよという人におススメです。

Jupyter labのMarkdown変換手順

「File」->「Save and Export Notebook As…」->「Markdown」の順番でクリックします。

Jupyter NotebookのMarkdown変換手順

「File」->「Download as」->「Markdown(.md)」の順番でクリックします。

nbconvertでipynbを変換する準備

Jupyter notebook/labから手動で、markdownに変換する方法は簡単ですが、自動化できないのが難点です。

nbconvertモジュールを使用すると、Anacondaプロンプトやpythonスクリプトで変換できます。

まずは、仮想環境にnbconvertをインストールしましょう。

Anacondaを使用している人は、Anacondaプロンプトで次のコマンドを実行してインストールしましょう。

conda install nbconvert

新しく仮想環境を作る場合には、次のコマンドで作成します。

conda create -n 仮想環境名 nbconvert

Anacondaのプロンプトから変換

Anacondaプロンプトからipynbmarkdownに変換する場合は、次のコマンドを実行します。

jupyter nbconvert --to markdown XXX.ipynb

このとき、XXX.ipynbはファイルのパスです。

これだけで、XXX.ipynbのフォルダにXXX.mdが作成されます。

pythonスクリプトで変換

pythonスクリプトで変換する場合も、nbconvertを使用します。

次の2ステップを踏めばOKです、

  • MarkdownExporter()クラスを生成
  • .from_filename()メソッドで変換

次のサンプルマークダウンファイルを使って実行例を見てみましょう。

from nbconvert import MarkdownExporter

IPYNB_FILE_PATH = "xxx.ipynb"

markdown_exporter = MarkdownExporter()
md = markdown_exporter.from_filename(IPYNB_FILE_PATH)

変換されたmdは、次の要素を持つ(タプル)です。

  • md[0] -> 変換後markdownの文字列
  • md[1] -> メタデータ
print(md[0])
# # テスト用ファイル

# ipynb -> markdownの変換確認用ファイル


# ```python
# print("Hello")
# ```

#     Hello
from pprint import pprint
pprint(md[1])
# ResourcesDict(None,
#               {'deprecated': <function deprecated at 0x000001F036D25C10>,
#                'global_content_filter': {'include_code': True,
#                                          'include_input': True,
#                                          'include_input_prompt': True,
#                                          'include_markdown': True,
#                                          'include_output': True,
#                                          'include_output_prompt': True,
#                                          'include_output_stdin': False,
#                                          'include_raw': True,
#                                          'include_unknown': True,
#                                          'no_prompt': False},
#                'metadata': ResourcesDict(None,
#                                          {'modified_date': 'May 19, 2022',
#                                           'name': 'xxx',
#                                           'path': ''}),
#                'output_extension': '.md',
#                'outputs': {},
#                'raw_mimetypes': ['text/markdown', 'text/html', '']})

MarkdownExporter()を生成する際に引数を設定しておくと、markdownとして出力しない内容を指定できます。

主要なところは次の表の通りです。

出力しない内容 仮引数名
コードセル exclude_code_cell=True
マークダウンセル exclude_markdown=True
アウトプットセル exclude_output=True

アウトプットセルを出力しない例を見てみましょう。

markdown_exporter = MarkdownExporter(exclude_output=True)
md = markdown_exporter.from_filename(IPYNB_FILE_PATH)

print(md[0])
# # テスト用ファイル
# 
# ipynb -> markdownの変換確認用ファイル
# 
# 
# ```python
# print("Hello")
# ```

Pythonで作業を効率化する方法

今回はipynbmarkdownに変換する方法を紹介しました。

pythonを使えば、簡単なスクリプトで作業を劇的に効率化することも可能です!

pythonの効率化関係で言えば、次の記事で紹介しているような本が自動化の本がおススメです。

≫【レビュー】退屈なことはPythonにやらせよう | 単純作業は自動化
名著「退屈なことはPythonにやらせよう 」をレビュー!単純作業を自動化して、自分が本当にしたいことのために時間を確保していこう!所要時間やできるようになったことを紹介!この本を参考にして作成した、自作自動化スクリプトも紹介しています!
www.yutaka-note.com/entry/python_jido
 
≫【レビュー】Python自動処理 全部入り。 | 即効性重視!Pythonによる自動化事例集!
今回は、Pythonの作業自動処理の解説本『Python自動処理全部入り』をレビュー!この本は、特定の作業に特化した即効性の重視の自動化解説本です。よくある作業から自動化しやすい作業を抽出して、それらの自動化を集中的に解説した本という印象です。本の中に自分のニーズに合った自動化処理が見つかれば、その日からすぐ使える事例集のような印象です。
www.yutaka-note.com/entry/python_jido_zenbu