コンテンツにスキップ

Python str で Markdown を記述する

FastAPI のドキュメント記述のように Python コード内で Markdown を記述する機会がある。Python の文字列で Markdown を記述をする際に、Python のインデントを合わせて記述すると Markdown のインデントがずれてしまう問題がある。この問題を解決するために、Python の文字列で Markdown を記述する方法を調べた。

Python の文字列で Markdown を記述する

次のように Python の文字列で Markdown を記述すると、Markdown のインデントがずれてうまく表示されない。

1
2
3
4
md = """hi
      - list1
      - list2
      """

この問題を解決するために、いくつかの方法がある。まず愚直に Markdown のインデントを合わせる方法がある。

1
2
3
4
md = """hi
- list1
- list2
"""

しかし、上記の方法は可読性が悪い。次に、Python の文字列のインデントを削除する方法がある。

1
2
3
4
5
6
7
8
from inspect import cleandoc

md = cleandoc(
        """hi
        - list1
        - list2
        """
      )

この方法は、Python のインデントを合わせたまま、Markdown のインデントを削除できる。今回は cleandoc を使ったが、関連するものとしてtyping_extensionsDocがある。