reStructuredText からmarkdownへの変換
ソースファイル前回、ノートブックファイルをreStructured text(rst)に変換することによって、画像ファイルが取り出せるという事を書きました。 その際、画像ファイルの対応箇所を見つけるのに、rstファイルをテキストエディタで開く必要がありました。
その続編として、rstがmarkdownに変換できる事が分かりましたので、紹介しておきます。(コメントを追加しましたので、参照下さい。)
ノートブックを他の形式に変換するnbconvertでは内部でpandocというソフトを使っているのですが、これにはパイソン版(正確には薄いラッパーと呼ぶそうです)があります。 これをpipなどを使ってインストールしておきます。 すると以下のように簡単なコマンドでmarkdown(md)に変換できました。
In [1]:
import pypandoc
output = pypandoc.convert('SVG2PNG.rst', 'md')
ただ、残念ながらそのままではノートブックでは読めませんでした。画像ファイルへのリンクの仕方が微妙に違うようです。
詳細は不明なのですが。
参考サイト
ともかくも、"files/"というのを付ければよさそうなので、以下のコマンドを書きました。 正規表現というモジュール(re)を用いて、該当箇所を書き換えます。
今回は、svgファイルだけに関心があるので、そこだけを書き換えますが、pngファイルも同様に可能です。
また、画像ファイルへのリンクの手前に次の画像はこういうファイル名だよ、と注釈を挿入しました。
詳細は不明なのですが。
参考サイト
ともかくも、"files/"というのを付ければよさそうなので、以下のコマンドを書きました。 正規表現というモジュール(re)を用いて、該当箇所を書き換えます。
今回は、svgファイルだけに関心があるので、そこだけを書き換えますが、pngファイルも同様に可能です。
また、画像ファイルへのリンクの手前に次の画像はこういうファイル名だよ、と注釈を挿入しました。
In [2]:
import re
output2=re.sub(r'(!\[image\]\()(.+\.(svg|SVG)\))',r'</br><FONT color="red">(the next image is \2</br>\n\n\1files/\2</FONT> ',output)
#output2=re.sub(r'(!\[image\]\()(.+\.(png|svg|PNG|SVG)\))',r'**(the next image is \2**\n\n\1files/\2 ',output)
#pngを含める場合は上記のようにする。
出来上がった文字列(output2)をmarkdownセルに書き込めば良いのですが、簡単な方法が見つからなかったので、以下のように一旦ファイルに落としてから、読み出しました。
In [3]:
f = open('tmp.md', 'w') # 書き込みモードで開く
f.write(output2) # 引数の文字列をファイルに書き込む
f.close()
%load tmp.md
Ipython1.1.0がリリースされ、nbconvertによるmarkdownへの変換が改良されていました。rstを経由する(Pypandocに頼る)必要はなくなりました。files/の追加は必要です。
返信削除