kindle的笔记推荐方式是使用clippings.io网站,可以自动去重标签,简化阅读,同时按书名分类,方便导入印象笔记。
这里使用python自己尝试去重。方法是遍历每段文字时,取每段的前8个字符,加入到集合。如果所遍历的文字没有出现在集合中,就写入到txt文件中。反之,则不写入。
方法一:
rtext=open("My Clippings.txt","r",encoding='utf-8')#kindle中的txt放到py文件的根目录
wtext=open("Clipping.txt","w",encoding='utf-8')#输出的文件名
lines=set() #声明lines是空集合
for i in rtext:
a = i.strip() #去除换行键
g=a[:8]#通过每行的前8个字符来比对
if g not in lines:
lines.add(g)#集合中没有g的记录,则添加进去
wtext.write(a+"\n\n\t") #逐行写入并加入两个回车和一个首行缩进,根据自己的喜好是否阅读时有回车,不喜欢删除一个\n
kindle选择文字毕竟没有手机那么灵敏,同时kindle的高亮笔记只有选中过,就会自动添加到My Clippings.txt中,即使取消高亮或redo也会生成,而不会删除不需要的笔记。多次选中文字就会有重复的笔记生成,我的习惯是以最后一次为满意的结果。所以我将列表反着遍历,取最后一次的结果,否则正常遍历就会写入第一次出现的文字。 方法二,有个小缺陷就是书的名字出现在每本书笔记的末尾。
方法二:
rtext=open("My Clippings.txt","r",encoding='utf-8').readlines()#kindle中的txt放到py文件的根目录,逐段读取并生成列表
wtext=open("Clipping.txt","w",encoding='gb18030')#输出的文件名,编码方式要gb18030,否则乱码
lines=set() #声明lines是空集合
reverse_list=[]
rtext.reverse()
for i in rtext:
g = i[:8]#通过每行的前8个字符来比对
if g not in lines:#集合中没有g的记录,则添加进去
lines.add(g)
reverse_list.append(i)
reverse_list.reverse()#逆序列表,变成正常的顺序
for j in reverse_list:
wtext.write(j+'\n\t')#逐行写入并加入一个回车和一个缩进,根据自己的喜好是否阅读时有回车,不喜欢删除\n