File size: 1,656 Bytes
01e655b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ebc4336
 
 
 
01e655b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ebc4336
 
 
01e655b
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import mistune


class PlainTextRenderer(mistune.HTMLRenderer):
    def text(self, text):
        return text

    def link(self, text, url, title=None):
        return text

    def image(self, alt, url, title=None):
        return alt

    def emphasis(self, text):
        return text

    def strong(self, text):
        return text

    def block_code(self, code, info=None):
        # remove code
        return ""

    def block_quote(self, text):
        return text

    def heading(self, text, level):
        return text + "\n"

    def newline(self):
        return "\n"

    def list(self, text: str, ordered: bool, **attrs) -> str:
        if ordered:
            html = ""
            return html + "\n" + text + "\n"
        return "\n" + text + "\n"

    def list_item(self, text):
        return "" + text + "\n"

    def paragraph(self, text):
        return text + "\n"

    def codespan(self, text: str) -> str:
        # remove code
        return ""

    def thematic_break(self) -> str:
        # remove break
        return "\n"


def markdown_to_text(markdown_text):
    renderer = PlainTextRenderer()
    markdown = mistune.create_markdown(renderer=renderer)
    text = markdown(markdown_text)
    text = text.strip()
    return text


if __name__ == "__main__":
    markdown_text = """
# 标题

这是一个示例文本,其中包含 **加粗**、*斜体*、[链接](http://example.com) 和其他 Markdown 语法。

```ts
console.log(1)
```

- 列表项 1
- 列表项 2
- 列表项 3

1. 第一
2. 第二

> 这是一个引用。

`代码片段`
    """
    plain_text = markdown_to_text(markdown_text)
    print(plain_text)