使用すると、2つのPythonパッケージ、pypandoc
とpanflute
を利用する場合は、あなたが数行(sample code)でかなりpythonicallyそれを行うことができます:
は、テキストファイルexample.md
を考えると、あなたは、Pythonを持っていると仮定し3.3+、すでにpip install pypandoc panflute
した後、同じフォルダにサンプルコードを置き、シェルまたはから実行します。 IDLE。
import io
import pypandoc
import panflute
def action(elem, doc):
if isinstance(elem, panflute.Image):
doc.images.append(elem)
elif isinstance(elem, panflute.Link):
doc.links.append(elem)
if __name__ == '__main__':
data = pypandoc.convert_file('example.md', 'json')
doc = panflute.load(io.StringIO(data))
doc.images = []
doc.links = []
doc = panflute.run_filter(action, prepare=prepare, doc=doc)
print("\nList of image URLs:")
for image in doc.images:
print(image.url)
の手順は次のとおりです。
- 使用
pypandoc
値下げ文書
- のASTは、Docオブジェクトを作成するために
panflute
にロード含まれているJSON文字列を取得する(panfluteはとてもストリームが必要です私たちはStringIOを使用します)
run_filter
関数を使用して、すべての要素を繰り返し処理し、ImageオブジェクトとLinkオブジェクトを抽出します。
- 次にあなたは、altテキストをURLを印刷することができ、など
@coralv:私は、リンクを抽出するために、正規表現の中に見えたが、私は本当にそのためにプッシュダウンオートマトンを必要とする問題に遭遇してきました、任意のネストされた括弧を考慮に入れる。私はパーサを構築する前に、主にライブラリのソリューションを探しています。 –
Markdown自体は10年来変わっていないので、リンクされた質問と回答はかなり最新のものだと思います。 – Waylan