csvやエクセルの表をmarkdownの表形式に変換する方法を紹介します。
スクリプトを組んだり、エクセルを使う方法もありますが、今回は正規表現を使った置換でやります。
※急いでる人は結論を読んでください
※何故かatomで肯定戻り読みが使えないので、sakura editorでしか検証できていません。
やること
A,B,C
D,E,F
G,H,I
J,K,L
↓
|A|B|C|
|:-:|:-:|:-:|
|D|E|F|
|G|H|I|
|J|K|L|
step0:正規表現が使えるエディタに変換前のcsv等をコピペ
Excelの表はエディタに貼り付けるとtsv(タブ文字区切り)になっています。
以降csv前提で書いているので、カンマ区切りを置換している部分は,
を\t
に読み替えてください。
step1:正規表現の置換で2行目の左右寄せ「:-:」を除く部分の表を作ります
※tsvでやってる人は早速置換前の,
を\t
に読み替えてください
//置換前
^|$|,
//置換後
|
|A|B|C|
|D|E|F|
|G|H|I|
|J|K|L|
step2.正規表現の置換で2行目の作成を行います
markdownの表には、各列の(左寄せ|真ん中寄せ|右寄せ)を表現する2行目が不可欠です。
こちらは1行目をコピペして余分に作成したものを正規表現で置換してを2行目として作成します。
|A|B|C|
|A|B|C|
|D|E|F|
|G|H|I|
|J|K|L|
上記のように一行目をコピペで増やした後、
2行目に対して以下の正規表現を実行してください。
//置換前
(?<=¥|).+?(?=¥|)
//置換後(前列真ん中寄せで良い場合)
:-:
正規表現でやってることとしては、|と|に挟まれている文字列を:-:に変換しています。
|A|B|C|
|:-:|:-:|:-:|
|D|E|F|
|G|H|I|
|J|K|L|
Markdown形式の表に変換できました。
ちゃんとレンダリングできますよ。
A | B | C |
---|---|---|
D | E | F |
G | H | I |
J | K | L |
あとは必要な箇所の右寄せ・左寄せを調整してください。
最後に - Markdownの表形式に思うこと
ヘッダとデータの間に入る2行目のせいで変換に手間がかかりました。
|A|B|C|
|:-:|:-:|:-:| ←これ
|D|E|F|
|G|H|I|
|J|K|L|
再利用性とか効率性を重視するなら2行目なしでも表として扱えるようにしてほしいです。
ですがWikipediaには
書きやすくて読みやすいプレーンテキストとして記述した文書を、妥当なXHTML(もしくはHTML)文書へと変換できるフォーマット
とあります
「プレーンテキストでも読みやすい」コンセプトを重視するなら
|A |B |C |
|:-:|:-:|:-:|
|D |E |F |
|G |H |I |
|J |K |L |
ここまで整形すべきです。また2行目があることでプレーンテキストでも読みやすくなっています。
手間ですがリーダブルコードの縦を揃えるに通じるところがあります。個人的には好きです
文字数をあわせて列を揃えるのは正規表現では解決できません(多分)。
これはスクリプトを作る必要があります。
テキストエリアにペタッと貼ってボタンを押したら、きれいな表形式が出来るサイトなんかがあれば最高だと思います。
なんとそんなサイトがありました
結論:このサイトを使いましょう
前述した読みやすさも実現してくれます。すごい。
A,B,C
D,E,F
G,H,I
J,K,L
| A | B | C |
|---|---|---|
| D | E | F |
| G | H | I |
| J | K | L |