Kindle笔记转换为markdown文档

今天发现Kindle笔记可以导出一个.csv文档,并可以发送到我的邮箱。如此我就想利用这个Kindle笔记.csv文件,写一个Python小程序,将.csv文件转化为.md文档,然后将这个.md文档部署到我的Blog上来。

利用kindle导出的csv文档

前处理:把csv文档中前面几行多余删除,并删除以加星标这一列。

具体的代码如下:

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
import pandas as pd
import codecs
title="王小波全集"
date="2018-4-24"
tages="王小波"
categories="读书笔记"
data = pd.read_csv("book.csv")
f=codecs.open("%s.md"%title,"w","UTF-8")
flag=1
f.write(u"""---
title: %s
date: %s
tags: %s
categories: %s
---\n"""%(title,date,tages,categories))
for i in range(data.shape[0]):
if(data.iloc[i][0] == u"标注 (黄)"):
f.write(u"### %i. 标注 | %s\n"%(flag,data.iloc[i][1]))
f.write(u"\n")
f.write(u"> %s\n"%data.iloc[i][2])
f.write(u"\n")
if ( i<data.shape[0]-1 and data.iloc[i+1][0]==u"笔记" ):
i+=1
f.write(u"浩子注:%s\n"%data.iloc[i][2])
f.write(u"\n")
f.write(u"------\n")
flag+=1
f.close()

关于kindle导出笔记csv文档的bug

但是kindle导出的pdf文档和csv文档是有bug,导出的每段摘抄后面两个字符都会丢失,导致整个笔记并不完整。而且kindle的内置导出功能还只能到处在商城购买的书籍,第三方电子书是没有导出按钮。

为了解决这个问题,我利用了第二个工具kindle mate。这是一个导出kindle笔记的工具,可以导出任何文档的笔记内容,包括第三方电子书,使用很方便。

为了方便整理笔记,我设置kindle mate的导出笔记只有标注和笔记两个内容,并且按时间升序排序,旧的在前。

注:这里导出的文件需要另存为utf-8格式。

然后写了一个简单的Pyhon代码将导出,并格式化:

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
import codecs

book = open('utf.txt', encoding = "UTF-8").read() # 读取本地文档
content = book.split("\n") # 用\n字符分割文档

# 创建文档的标题,日期,标签,分类,并格式化文档头部
title = "巨婴传"
date = "2018-4-24"
tages = "武志红"
categories = "读书笔记"

f = codecs.open("%s.md" % title, "w", "UTF-8") # 利用codecs创建一个utf-8格式的md文档
flag = 1
f.write(u"""---
title: %s
date: %s
tags: %s
categories: %s
---\n""" % (title, date, tages, categories))

for text in content:
if text == "": # 屏蔽空行
continue
elif text.startswith("\t"): # 如果读取的是笔记行"\t[笔记]"
f.write(text.replace("\t[笔记]", "浩子注:") + "\n\n")
else: # 摘抄内容引用格式化
f.write(u"### 第 %i 条笔记:\n\n" % flag)
f.write(u'> %s\n\n' % text)
flag += 1
f.close()

结果达到我的预期,关于最终效果可以点击查看王小波全集

-------------本文结束感谢您的阅读-------------