Ccmmutty logo
Commutty IT
0 pv1 min read

Markdownのテキスト部分だけ抽出してみた

https://picsum.photos/seed/13913f98289346a196e37943390b2607/1200/630

Markdownから、テキスト部分だけを取り出す

方法

直接できるライブラリはあるにはあるようだが、md→HTML→Beautiful Soup と経由して処理する方が 確実のようだ。
python
!pip install markdown

Collecting markdown
Downloading Markdown-3.3.6-py3-none-any.whl (97 kB) [?25l  |███▍ | 10 kB 21.2 MB/s eta 0:00:01  |██████▊ | 20 kB 9.0 MB/s eta 0:00:01  |██████████ | 30 kB 7.7 MB/s eta 0:00:01  |█████████████▍ | 40 kB 4.7 MB/s eta 0:00:01  |████████████████▊ | 51 kB 4.5 MB/s eta 0:00:01  |████████████████████ | 61 kB 5.0 MB/s eta 0:00:01  |███████████████████████▌ | 71 kB 3.8 MB/s eta 0:00:01  |██████████████████████████▉ | 81 kB 4.3 MB/s eta 0:00:01  |██████████████████████████████▏ | 92 kB 4.4 MB/s eta 0:00:01  |████████████████████████████████| 97 kB 2.5 MB/s [?25h
Requirement already satisfied: importlib-metadata>=4.4 in /srv/conda/envs/notebook/lib/python3.7/site-packages (from markdown) (4.8.1)
Requirement already satisfied: typing-extensions>=3.6.4 in /srv/conda/envs/notebook/lib/python3.7/site-packages (from importlib-metadata>=4.4->markdown) (3.10.0.2) Requirement already satisfied: zipp>=0.5 in /srv/conda/envs/notebook/lib/python3.7/site-packages (from importlib-metadata>=4.4->markdown) (3.6.0)
Installing collected packages: markdown
Successfully installed markdown-3.3.6
python
import markdown
from bs4 import BeautifulSoup as bs

def markdown_to_plain_short_text(string):
    """
    md文字列を受け取り、HTMLに変換した後、bs4を使ってテキスト部分のみにし出力
    """
    md = markdown.Markdown()
    html = md.convert(string)
    text = ''.join(bs(html, 'html.parser').findAll(text=True))
    print(text)
python
md_string = '''
# h1の文字が出てくると嬉しい

## h2の文字はでてくるだろう

* リスト1
* リスト2
* リスト3

すごい!
'''
python
markdown_to_plain_short_text(md_string)

h1の文字が出てくると嬉しい h2の文字はでてくるだろう リスト1 リスト2 リスト3 すごい!

Discussion

コメントにはログインが必要です。