想過把 Markdown 文件自動拆解成結構化資料,方便進行分析或轉換嗎?這篇教學會帶你用 mistune 這個輕量級解析器,把 Markdown 轉成 AST(抽象語法樹),再輸出為 JSON 格式,方便後續自動化處理!
步驟簡介
- 安裝 mistune
- 準備 Markdown 檔案
- 撰寫 Python 程式,解析並輸出 JSON
- 檢視結果
1. 安裝 mistune
在終端機輸入:
pip install mistune2. 準備 Markdown 檔案
建立一個 sample.md,內容如: sample.md
sample.md 若使用記事本開啟的話:
# Title H1
## Subtitle H2
### Subtitle H3
#### Subtitle H4
##### Subtitle H5
###### Subtitle H6
**Bold Text**
*Italic Text*
~~Strikethrough~~
`Inline code`
[Link text](https://example.com)

> Blockquote
- Unordered list item 1
- Unordered list item 2
- Nested unordered item
* Another bullet
1. Ordered list item 1
2. Ordered list item 2
1. Nested ordered item
---
Horizontal rule above
```python
# Code block
print("Hello, world!")sample.md 若使用cursor開啟的話:

3. Python 解析程式
將以下程式存成 md2json.py(或其他你喜歡的名字):
import mistune
import os
import json
dir_py = os.path.dirname(os.path.abspath(__file__))
dir_ex = os.path.join(dir_py, 'export')
os.makedirs(dir_ex, exist_ok=True)
basename_md = 'sample.md'
path_ex = os.path.join(dir_ex, basename_md.replace('.md', '.json'))
with open(basename_md, encoding='utf-8') as f:
md_content:str = f.read()
markdown = mistune.create_markdown(renderer='ast')
#mistune.markdown.Markdown
ast:list[dict] = markdown(md_content)
with open(path_ex, 'w', encoding='utf-8') as f:
json.dump(ast, f, ensure_ascii=False, indent=4)
print(f'exported to {path_ex}' )4. 執行程式
在命令列執行:
python md2json.py程式會在 export 資料夾下,產生 sample.json,裡面就是你的 Markdown AST 結構!
5. 檢視結果
打開 export/sample.json,你會看到類似這樣的資料結構:

補充說明
- AST 結構:方便自動化分析、轉換(如產生 HTML、統計標題、內容摘要等)。
- JSON 格式:易於跨語言、跨平台應用。
- Mistune:速度快、擴充彈性高。
結論
這就是用 Python 結合 Mistune 把 Markdown 內容轉成 AST 並導出 JSON 的完整流程!
你可以進一步自訂 AST 處理、分析內容、轉換成各種格式,應用無限大!
## 參考資源
– [Mistune 官方文檔](https://mistune.lepture.com/)
– [Rich 官方文檔](https://rich.readthedocs.io/)
– [Markdown語法指南](https://www.markdownguide.org/)
推薦hahow線上學習python: https://igrape.net/30afN
Markup vs. Markdown:從商場標價到程式碼的雙關語藝術
在學習電腦技術時,我們常會聽到 Markdown 這個詞(特別是寫筆記或技術文件時),而它的對立面通常被稱為 Markup(標記語言,如 HTML)。
但你知道嗎?這兩個詞其實源自於我們日常生活中的商業行為。程式設計師利用這種「日常英語」的邏輯,玩了一個極具巧思的文字遊戲。讓我們從最生活化的場景開始拆解。
1. 日常生活與商業英語:價格的「上」與「下」
在零售業與會計領域,這兩個詞非常直觀,完全取決於價格的變動方向。
Markup (漲價 / 加價)
- 概念:商人進貨後,為了獲利,會在「成本價」之上加上一筆利潤,這個動作就是 Mark up。
- 情境:你走進一家服飾店,一件衣服成本 100 元,標價 150 元。這多出來的 50 元(或 50%)就是 Markup。
- 例句: Retailers usually mark up clothing by 50%.
(零售商通常會把服裝加價 50% 出售。)
Markdown (降價 / 折扣)
- 概念:當商品過季或賣不掉時,商家必須把價格往「下」調,這個動作就是 Mark down。
- 情境:換季拍賣時,那件原本 150 元的衣服沒人買,店員貼上紅標籤改成 100 元出清。這個打折的動作就叫 Markdown。
- 例句: These shoes have been marked down for the clearance sale.
(這些鞋子已經為了清倉拍賣而降價了。)
2. 電腦技術領域:繁瑣與簡約的對決
在電腦世界裡,這兩個詞被賦予了新的意義,但核心邏輯依然保留了「增加」與「減少」的對比。
Markup (標記語言)
- 原始意義的轉化:這裡的 Markup 取自出版業的術語。早期編輯在紙稿上用紅筆「標記」排版指令(如:這裡變粗體、那裡換行)。
- 技術應用:到了電腦時代,這些紅筆標記變成了複雜的標籤(Tags)。最著名的例子就是 HTML (HyperText Markup Language)。
- 特點:為了告訴電腦如何顯示版面,你必須寫一大堆
< >符號。- 例子:
<strong>這是一段很重要的文字</strong>
- 例子:
- 隱喻:就像商業上的 Markup 是「加上去」一樣,HTML 也是在純文字上「加上」很多額外的標籤,讓原本的文字變得比較「重」、比較複雜。
Markdown (輕量級標記語言)
- 命名的雙關語:Markdown 的發明者 John Gruber 深知 Markup 在商業上是「漲價」,反義詞是「降價 (Markdown)」。
- 技術哲學:他認為 HTML 太繁瑣了(Markup 太多),寫作應該要更簡單、更純粹。於是他創造了一種新的語言,目的是**「減少」**那些干擾寫作的標籤。
- 特點:用最簡單的符號來排版,讓你看起來像是在寫純文字。
- 例子:
**這是一段很重要的文字**
- 例子:
- 隱喻:如果 Markup 代表「繁複(價格向上)」,那麼 Markdown 就代表「極簡(價格向下)」。它把寫作的門檻「打折」了,讓大家都能輕鬆上手。
總結:一張表看懂雙重含義

所以,當下次你在寫 Markdown 筆記時,不妨想想百貨公司的折扣季——你正在享受一種「去除了繁瑣標籤成本」的寫作優惠!
推薦hahow線上學習python: https://igrape.net/30afN










近期留言