Python-kindle读书笔记格式化工具

'''策略:
1、找到'=========='来分割各个段落
2、使用正则表达式找出关键词,格式化原段落,只留下:书名、时间、关键内容
3、相同书名的内容归集到一起
4、输出到txt文件
'''
import re
class ReadMyclippings():
    path = 'D:\\My Clippings.txt'
    outputPath = 'D:\\My Clippings2.txt'
    values = []

    def _init_(self):
        pass

    '''
    返回读取内容
    utf-8-sig用于去除开头的\\UFFEE,kindle的标准格式
    '''
    def readFile(self, filePath):
        with open(filePath,'r',encoding='utf-8-sig') as f:
            self.values.append(f.read())
        return self.values[0]

    '''写入文件'''
    def outputFile(self,filePath,value):
        with open(filePath,'a',encoding='utf-8') as f:
            f.write(value)

    '''分割原文'''
    def splitParagraph(self,value):
        self.values = str(value).split('==========')
        return self.values

    '''格式化原文,返回一个dict'''
    def formatValue(self,values):
        valueDict = {}
        for value in values:
            value = value.replace('\\n','')
            pras = value.split('-')
            title = pras[0].rstrip().lstrip()
            #找出时间与关键内容
            keyTime = re.findall(r'[0-9][0-9][0-9][0-9]年.*:[0-9][0-9]',value)

            #正则表达式()表示要选出来的数据
            #一定要添加re.DOTALL标示位,否则换行符不会被匹配到
            keyValue =re.findall(r'[0-9]:[0-9][0-9]:[0-9][0-9](.*)',value,re.DOTALL)


            #截取為空的直接跳出
            if(len(keyTime)==0 or len(keyValue)==0):
                continue

            strkeyValue = '   '+keyValue[0] +'\n\t'+ keyTime[0] + '\n\n' + '==========='
            dictValue = valueDict.get(title,'defualt')
            if(dictValue =='defualt'):
                valueDict[title] = strkeyValue
            else:
                valueDict[title] = dictValue+'\n'+strkeyValue

        return valueDict

if __name__ == "__main__":
    read = ReadMyclippings()
    value = read.readFile(read.path)
    valueDict = read.formatValue(read.splitParagraph(value))
    for key in valueDict.keys():
        #与上一个标题间隔1行
        newKey="\n《"+key.strip().lstrip()+"》"
        read.outputFile(read.outputPath,newKey+'\n')
        read.outputFile(read.outputPath,'      '+valueDict.get(key))
        read.outputFile(read.outputPath,"\n" + '-----------------------------------------------' + "\n")

效果

修改前:

修改后

尧哥
文章已创建 4

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部