一、说明:
今天突然想着学习一下如何将markdown和HTML互转的知识,因为我在CSDN的写的博客可以导出的时候有俩种方式,所以想着也可以把他们相互转化下。我觉得python现在很成熟了,肯定有这方面的轮子。于是就上网搜索找了一些整理下。
如果你只是转换单个文件,推荐直接在线转换:在线互转地址
其实这个在线地址里面有好多在线工具,需要的自己研究吧:
二、互转模块:
1、md转html
这里我找到俩个模块可以使用,但是md-to-html模块效果不好,网上大多数使用的也是markdown的模块。
①、markdown模块(推荐):
这里有一个我感觉还不错的博客地址,感兴趣的可以去学习看看:
第一步:下载安装:markdown
第二步:准备一个md文件,我这里是使用CSDN写作的部分帮助文档md。
1 | 快捷键 |
2 | --------------------------- |
3 | 撤销:Ctrl/Command + Z |
4 | 重做:Ctrl/Command + Y |
5 | 加粗:Ctrl/Command + B |
6 | 斜体:Ctrl/Command + I |
7 | 标题:Ctrl/Command + Shift + H |
8 | 无序列表:Ctrl/Command + Shift + U |
9 | 有序列表:Ctrl/Command + Shift + O |
10 | 检查列表:Ctrl/Command + Shift + C |
11 | 插入代码:Ctrl/Command + Shift + K |
12 | 插入链接:Ctrl/Command + Shift + L |
13 | 插入图片:Ctrl/Command + Shift + G |
14 | 查找:Command + F |
15 | 替换:Command + G |
16 | |
17 | 标题 |
18 | --------------------------- |
19 | # 1级标题 |
20 | ## 2级标题 |
21 | ### 3级标题 |
22 | #### 四级标题 |
23 | ##### 五级标题 |
24 | ###### 六级标题 |
25 | |
26 | 文本样式 |
27 | --------------------------- |
28 | *强调文本* _强调文本_ |
29 | |
30 | **加粗文本** __加粗文本__ |
31 | |
32 | ==标记文本== |
33 | |
34 | ~~删除文本~~ |
35 | |
36 | > 引用文本 |
37 | |
38 | H~2~O is是液体。 |
39 | |
40 | 2^10^ 运算结果是 1024。 |
41 | |
42 | 列表 |
43 | --------------------------- |
44 | - 项目 |
45 | * 项目 |
46 | + 项目 |
47 | |
48 | 1. 项目1 |
49 | 2. 项目2 |
50 | 3. 项目3 |
51 | |
52 | - [ ] 计划任务 |
53 | - [x] 完成任务 |
54 | |
55 | 链接 |
56 | --------------------------- |
57 | 链接: [link](https://mp.csdn.net). |
58 | |
59 | 图片: ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw) |
60 | |
61 | 带尺寸的图片: ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw =30x30) |
62 | |
63 | 居中的图片: ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw#pic_center) |
64 | |
65 | 居中并且带尺寸的图片: ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw#pic_center =30x30) |
第三步:可以直接复制测试:
1 | from markdown import markdown |
2 | |
3 | print(dir(markdown)) |
4 | file = open('help.md','r',encoding='utf-8').read() |
5 | |
6 | html = markdown(file) |
7 | print(html) |
8 | |
9 | |
10 | with open('ret.html', 'w', encoding='utf-8') as file: |
11 | file.write(html) |
然后看出输入的ret.html文件。
②、md-to-html模块(不推荐):
模块地址:
第一步:安装md-to-html:
1 | pip install md-to-html |
第二步:准备一个gbk的md文件,我直接使用刚刚的会报编码错误,然后桌面新建一个dbk的txt就可以了,但是转换效果极差。
第三步:
cmd或者powershell中执行命令:
1 | md-to-html -i .\help.txt -o .\ret2.html |
结果就是:
发现没有,笔者刚刚的转换少了很多东西,所以这个模块做的效果不好,不建议使用这个,推荐使用第一个模块。
2、html转md:
①、tomd模块:
模块地址。
安装:
1 | pip install tomd |
第一步:使用刚刚成的html或者导出自己的一份博客的HTML文件进行测试。
这里我贴下我刚刚转存成功的。
1 | <h2>快捷键</h2> |
2 | <p>撤销:Ctrl/Command + Z |
3 | 重做:Ctrl/Command + Y |
4 | 加粗:Ctrl/Command + B |
5 | 斜体:Ctrl/Command + I |
6 | 标题:Ctrl/Command + Shift + H |
7 | 无序列表:Ctrl/Command + Shift + U |
8 | 有序列表:Ctrl/Command + Shift + O |
9 | 检查列表:Ctrl/Command + Shift + C |
10 | 插入代码:Ctrl/Command + Shift + K |
11 | 插入链接:Ctrl/Command + Shift + L |
12 | 插入图片:Ctrl/Command + Shift + G |
13 | 查找:Command + F |
14 | 替换:Command + G</p> |
15 | <h2>标题</h2> |
16 | <h1>1级标题</h1> |
17 | <h2>2级标题</h2> |
18 | <h3>3级标题</h3> |
19 | <h4>四级标题</h4> |
20 | <h5>五级标题</h5> |
21 | <h6>六级标题</h6> |
22 | <h2>文本样式</h2> |
23 | <p><em>强调文本</em> <em>强调文本</em></p> |
24 | <p><strong>加粗文本</strong> <strong>加粗文本</strong></p> |
25 | <p>==标记文本==</p> |
26 | <p>~~删除文本~~</p> |
27 | <blockquote> |
28 | <p>引用文本</p> |
29 | </blockquote> |
30 | <p>H~2~O is是液体。</p> |
31 | <p>2^10^ 运算结果是 1024。</p> |
32 | <h2>列表</h2> |
33 | <ul> |
34 | <li>项目</li> |
35 | <li> |
36 | <p>项目</p> |
37 | <ul> |
38 | <li>项目</li> |
39 | </ul> |
40 | </li> |
41 | <li> |
42 | <p>项目1</p> |
43 | </li> |
44 | <li>项目2</li> |
45 | <li> |
46 | <p>项目3</p> |
47 | </li> |
48 | <li> |
49 | <p>[ ] 计划任务</p> |
50 | </li> |
51 | <li>[x] 完成任务</li> |
52 | </ul> |
53 | <h2>链接</h2> |
54 | <p>链接: <a href="https://mp.csdn.net">link</a>.</p> |
55 | <p>图片: <img alt="Alt" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw" /></p> |
56 | <p>带尺寸的图片: <img alt="Alt" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw =30x30" /></p> |
57 | <p>居中的图片: <img alt="Alt" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw#pic_center" /></p> |
58 | <p>居中并且带尺寸的图片: <img alt="Alt" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw#pic_center =30x30" /></p> |
第二步:
转换代码:
其中:ret.html就是上面的html,make.md就是转换成功的markdown文件。
1 | from tomd import Tomd |
2 | |
3 | md_text = open('ret.html', 'r', encoding='utf-8').read() |
4 | markdown = Tomd(md_text).markdown |
5 | with open('make.md', 'w', encoding='utf-8') as file: |
6 | file.write(markdown) |
成功的md文件:
1 | |
2 | ## 快捷键 |
3 | |
4 | 撤销:Ctrl/Command + Z |
5 | 重做:Ctrl/Command + Y |
6 | 加粗:Ctrl/Command + B |
7 | 斜体:Ctrl/Command + I |
8 | 标题:Ctrl/Command + Shift + H |
9 | 无序列表:Ctrl/Command + Shift + U |
10 | 有序列表:Ctrl/Command + Shift + O |
11 | 检查列表:Ctrl/Command + Shift + C |
12 | 插入代码:Ctrl/Command + Shift + K |
13 | 插入链接:Ctrl/Command + Shift + L |
14 | 插入图片:Ctrl/Command + Shift + G |
15 | 查找:Command + F |
16 | 替换:Command + G |
17 | |
18 | ## 标题 |
19 | |
20 | # 1级标题 |
21 | |
22 | ## 2级标题 |
23 | |
24 | ### 3级标题 |
25 | |
26 | #### 四级标题 |
27 | |
28 | ##### 五级标题 |
29 | |
30 | ###### 六级标题 |
31 | |
32 | ## 文本样式 |
33 | |
34 | **强调文本** **强调文本** |
35 | |
36 | **加粗文本** **加粗文本** |
37 | |
38 | ==标记文本== |
39 | |
40 | ~~删除文本~~ |
41 | |
42 | > |
43 | 引用文本 |
44 | |
45 | |
46 | H~2~O is是液体。 |
47 | |
48 | 2^10^ 运算结果是 1024。 |
49 | |
50 | ## 列表 |
51 | |
52 | - 项目 |
53 | <li> |
54 | 项目 |
55 | <ul> |
56 | - 项目 |
57 | |
58 | 项目1 |
59 | |
60 | 项目3 |
61 | |
62 | [ ] 计划任务 |
63 | |
64 | ## 链接 |
65 | |
66 | 链接: [link](https://mp.csdn.net). |
67 | |
68 | 图片: <img alt="Alt" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw" /> |
69 | |
70 | 带尺寸的图片: <img alt="Alt" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw =30x30" /> |
71 | |
72 | 居中的图片: <img alt="Alt" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw#pic_center" /> |
73 | |
74 | 居中并且带尺寸的图片: <img alt="Alt" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw#pic_center =30x30" /> |
②、html2text文件(推荐):
安装模块:
1 | pip install html2text |
转换代码:
1 | import html2text |
2 | |
3 | |
4 | md_text = open('ret.html', 'r', encoding='utf-8').read() |
5 | |
6 | markdown = html2text.html2text(md_text) |
7 | with open('make2.md', 'w', encoding='utf-8') as file: |
8 | file.write(markdown) |
最后生成一个make2.md文件。
1 | ## 快捷键 |
2 | |
3 | 撤销:Ctrl/Command + Z 重做:Ctrl/Command + Y 加粗:Ctrl/Command + B 斜体:Ctrl/Command + |
4 | I 标题:Ctrl/Command + Shift + H 无序列表:Ctrl/Command + Shift + U 有序列表:Ctrl/Command |
5 | + Shift + O 检查列表:Ctrl/Command + Shift + C 插入代码:Ctrl/Command + Shift + K |
6 | 插入链接:Ctrl/Command + Shift + L 插入图片:Ctrl/Command + Shift + G 查找:Command + F |
7 | 替换:Command + G |
8 | |
9 | ## 标题 |
10 | |
11 | # 1级标题 |
12 | |
13 | ## 2级标题 |
14 | |
15 | ### 3级标题 |
16 | |
17 | #### 四级标题 |
18 | |
19 | ##### 五级标题 |
20 | |
21 | ###### 六级标题 |
22 | |
23 | ## 文本样式 |
24 | |
25 | _强调文本_ _强调文本_ |
26 | |
27 | **加粗文本** **加粗文本** |
28 | |
29 | ==标记文本== |
30 | |
31 | ~~删除文本~~ |
32 | |
33 | > 引用文本 |
34 | |
35 | H~2~O is是液体。 |
36 | |
37 | 2^10^ 运算结果是 1024。 |
38 | |
39 | ## 列表 |
40 | |
41 | * 项目 |
42 | * 项目 |
43 | |
44 | * 项目 |
45 | * 项目1 |
46 | |
47 | 项目2 |
48 | |
49 | * 项目3 |
50 | |
51 | * [ ] 计划任务 |
52 | |
53 | * [x] 完成任务 |
54 | |
55 | ## 链接 |
56 | |
57 | 链接: [link](https://mp.csdn.net). |
58 | |
59 | 图片: |
60 | ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw) |
61 | |
62 | 带尺寸的图片: |
63 | ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw |
64 | =30x30) |
65 | |
66 | 居中的图片: |
67 | ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw#pic_center) |
68 | |
69 | 居中并且带尺寸的图片: |
70 | ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw#pic_center |
71 | =30x30) |
③、html2markdown模块:
安装:
1 | pip install html2markdown |
转换代码:
1 | import html2markdown |
2 | |
3 | |
4 | md_text = open('ret.html', 'r', encoding='utf-8').read() |
5 | |
6 | markdown = html2markdown.convert(md_text) |
7 | |
8 | with open('make3.md', 'w', encoding='utf-8') as file: |
9 | file.write(markdown) |
最后生成md文件:
1 | ## 快捷键 |
2 | |
3 | 撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + Shift + H无序列表:Ctrl/Command + Shift + U有序列表:Ctrl/Command + Shift + O检查列表:Ctrl/Command + Shift + C插入代码:Ctrl/Command + Shift + K插入链接:Ctrl/Command + Shift + L插入图片:Ctrl/Command + Shift + G查找:Command + F替换:Command + G |
4 | |
5 | ## 标题 |
6 | |
7 | # 1级标题 |
8 | |
9 | ## 2级标题 |
10 | |
11 | ### 3级标题 |
12 | |
13 | #### 四级标题 |
14 | |
15 | ##### 五级标题 |
16 | |
17 | ###### 六级标题 |
18 | |
19 | ## 文本样式 |
20 | |
21 | _强调文本_ _强调文本_ |
22 | |
23 | __加粗文本__ __加粗文本__ |
24 | |
25 | ==标记文本== |
26 | |
27 | ~~删除文本~~ |
28 | |
29 | > |
30 | > 引用文本 |
31 | > |
32 | |
33 | H~2~O is是液体。 |
34 | |
35 | 2^10^ 运算结果是 1024。 |
36 | |
37 | ## 列表 |
38 | |
39 | * 项目 |
40 | * |
41 | |
42 | 项目 |
43 | |
44 | |
45 | |
46 | * 项目 |
47 | |
48 | |
49 | |
50 | * |
51 | |
52 | 项目1 |
53 | |
54 | |
55 | * 项目2 |
56 | * |
57 | |
58 | 项目3 |
59 | |
60 | |
61 | * |
62 | |
63 | \[ \] 计划任务 |
64 | |
65 | |
66 | * \[x\] 完成任务 |
67 | |
68 | ## 链接 |
69 | |
70 | 链接: [link](https://mp.csdn.net). |
71 | |
72 | 图片: ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw) |
73 | |
74 | 带尺寸的图片: ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw =30x30) |
75 | |
76 | 居中的图片: ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw#pic_center) |
77 | |
78 | 居中并且带尺寸的图片: ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw#pic_center =30x30) |
通过对比三个模块的markdown文件的结果,发现生成的效果第二个模块的我感觉还不错(对比项目那一块的结果,其他的基本上都一样。)