微信读书笔记处理

  1. 微信读书App可以将笔记导出:打开要导出笔记的书-选项-笔记-导出-复制到剪贴板
  2. 将笔记存为UTF-8编码的文本文件,这里使用Markor App,将笔记内容选择“以纯文本形式粘贴”,得到一个markdown文件后,可以由手机端微信转发到电脑端微信接收。不直接复制到微信再发送到电脑端是因为微信对单次发送内容长度有限制。
  3. 将文本内容做替换(可使用Notepad++等),以得到规范的markdown文件。主要是微信读书的一些乱七八糟格式,如等字符。目前发现的有">>", "◆", "> ,", "> 。", "> ”", "", "[插图]",我们将其依次替换为">", "##", "> ", "> ", "> ", "", ""
  4. 为简化操作,编写如下Python script可运行后一次性完成替换。

textreplace.py使用方式简单:

  1. 将该脚本放在某目录下,并在该目录下创建data目录,将需要处理的文本文件放在data目录下。
  2. 运行该脚本即可。

如需增加需要替换的字符,只需更改对应的old_str_listnew_str_list内容即可。

textreplace.py

import os


def replace():
    path = r"data/"  # 文本文件所在目录,编码UTF-8
    file_list = os.listdir(path)
    for files in file_list:  # 遍历所有文件
        file_dir = os.path.join(path, files)  # 文件路径
        if os.path.isdir(file_dir):
            continue
        filename = os.path.splitext(files)[0]
        filetype = os.path.splitext(files)[1]
        filepath = path + filename + filetype

        old_str_list = [">>", "◆", "> ,", "> 。", "> ”", "", "[插图]"]  # 旧字符,需与下面的新字符一一对应
        new_str_list = [">", "##", "> ", "> ", "> ", "", ""]
        for old_str, new_str in zip(old_str_list, new_str_list):
            alter(filepath, old_str, new_str)


def alter(file, old_str, new_str):
    with open(file, "r", encoding="utf-8") as f1, open("%s.bak" % file, "w", encoding="utf-8") as f2:
        for line in f1:
            if old_str in line:
                line = line.replace(old_str, new_str)
            f2.write(line)

    os.remove(file)
    os.rename("%s.bak" % file, file)


replace()