python
Markdownでテーブルにidやclassをつけたい

はじめに

pythonでmarkdownのテキストを処理してるときに、テーブルに関してidやclassをつけたかったので、やりかたを調べてみた

結論からいうと、直接はできないっぽい

たとえば、以下の様な表があって、{#tableid}をどこかにつけたい場合、NG例の場所につけた場合、tableとして認識してくれない。


| aaa | bbb | ccc |
|-----|-----|-----|
| ddd | eee | fff |
| ggg | hhh | iii |


NG例1

| aaa | bbb | ccc |
|-----|-----|-----|
| ddd | eee | fff |
| ggg | hhh | iii |
{#tableid}

NG例2

{#tableid}
| aaa | bbb | ccc |
|-----|-----|-----|
| ddd | eee | fff |
| ggg | hhh | iii |


NG例3

| aaa | bbb | ccc |{#tableid}
|-----|-----|-----|
| ddd | eee | fff |
| ggg | hhh | iii |

では、divでくくって、そのdivにidつけた場合はどうなるだろうか? 実はこれもだめ。インライン要素になるため、そのまま挿入されてしまう。


NG例4

< div id="tableid" >
| aaa | bbb | ccc |
|-----|-----|-----|
| ddd | eee | fff |
| ggg | hhh | iii |

< / div >

で、一応以下の様にして、cssの隣接セレクタすればいいんでね?って記事を読んだけど、空のdiv要素を作るのはちょっと・・・


< div id="tableid" > < / div >
| aaa | bbb | ccc |
|-----|-----|-----|
| ddd | eee | fff |
| ggg | hhh | iii |

問題の解決にはなってないけど、直接tableを書くことにした。

コンバートしたhtmlのtableにくっつける事も考えたけど、markdown形式で書いてるテキストの中にhtmlのtableで書いてもpythonで処理できるので、それなら直接tableタグで書くことにした。もし、他人からmarkdown形式で渡されて困ってるなら、typola等でhtmlに直せばいいし、こっちのが気が楽かなと。