モチベーション
画像を貼り付けたマークダウンの表をエクセルで編集したい!ということがありました。(トレードオフ表や台帳)
ところが、VScodeのプレビューをエクセルにコピペしても、画像のリンクを持ってくることが出来ませんでした。
画像のリンクが付いてこないと、編集後エクセルからマークダウンにコピペした後、画像のパスを打ち直す必要があり、大変です。
ということで、pythonでスクリプトを作ることとしました。(かなり、やっつけ仕事ですが)
やったこと
- VScodeのマークダウンの表をコピー
- 下記のコードを実行
- エクセルへ貼り付け
- エクセルで編集
- エクセルでコピー
- VScodeに貼り付け
画像のリンクが付いているので、何もしなくても画像が表示される!素晴らしい
md_table2df.py
import mistune
import pyperclip
import pandas as pd
import re
md = mistune.Markdown()
res = md(pyperclip.paste())#クリップボードからテキストを取得して、HTMLに変換
pattern = '<img src="(.*)" alt="(.*)">'
rep = '![\\2](\\1)'
rep_tex = re.sub(pattern,rep,res)#画像の部分をマークダウン記法に変換
df = pd.read_html(rep_tex)[0]#dataframe作成
df.to_clipboard(index=False)#エクセルに貼り付けるため、クリップボードへコピー
【コードの説明】
手順は正直まどろっこしい。。。もっといい方法ありそう
- マークダウンのテキストをクリップボードから取り出し
- 取り出したテキストをHTMLへ変換
- HTMLの画像の箇所を正規表現を使用してマークダウン記法に置換
- pandasでHTMLから表を作成
- その表をクリップボードへ入れる
感想
ググってもありそうで、なかったです
プレビュー画面をコピペすれば、大部分はエクセルに持ってこれるので、あんまり需要ないのかな
それとも他に良い方法があるのかなぁ