微信和支付宝账单怎么合并成一本账(附 Python 脚本)
去年年底我想算清楚全年花了多少。微信账单导出来、支付宝账单导出来、银行卡流水导出来,三张表分别求和,加起来一看,数字大得离谱—— 比我全年的收入还高。 查了两个多小时才找到原因:12 月我用微信还了 3000 块信用卡。这笔钱,在微信账单里记一次「支出」,在银行流水里又记一次「支出」,在信用卡账单里再记一次「消费」。同一笔钱,算了三遍。 这不是我一个人会遇到的问题。 账单记录的是资金流动,不是消费。 你想知道的是「我花了多少」,而账单回答的是「钱经过了哪些地方」。这两件事在只有一个账户时几乎相等,一旦有了三份账单,差额能翻倍。 这篇讲怎么把它们合成一本账,并且把重复的那部分剔干净。 一、先搞清楚三份账单的区别 在动手之前,得知道它们的字段结构不是一回事。这不是细节问题—— 「收支方向」在这三家用了三种不同的表达 ,不统一就没法合并。 微信支付账单 支付宝账单 银行流水 获取方式 App 内申请,发到邮箱 App 内申请,发到邮箱(zip 有密码) 网银/手机银行直接导出 文件格式 CSV(UTF-8 带 BOM) CSV(GBK / GB18030) CSV 或 Excel,编码各家不同 收支方向 单独一列「收/支」= 收入 / 支出 / 中性 单独一列「收/支」= 收入 / 支出 / 不计收支 没有方向列,靠金额正负 金额写法 ¥123.45 (带货币符号) 123.45 带引号和逗号,如 "1,234.00" 表头前 十几行说明(昵称、时间范围、笔数) 几行说明 + 分隔线 账号信息若干行 分类 交易类型(商户消费、转账、红包…) 交易分类(餐饮美食、交通出行…) 无 最大的坑在第三行: 微信和支付宝用「列」表示方向,银行用「正负号」表示方向。 直接 concat 会把银行的支出当成收入,或者把微信的支出当成字符串无法求和。 所以合并的第一步不是清洗,是 统一语言 。 二、导出:两家 App 的具体路径 微信 :我 → 服务 → 钱包 → 账单 → 右上角「常见问题」→ 下载账单 → 用于个人对账 → 选时间范围 → 填邮箱 → 收到 zip(解压密码在微信里单独发给你)。 支付宝 :我的 → 账单 → 右上角「···」→ 开具交易流水证明 → 用于个人对账 → 选时间范围 → 填邮箱 → 收到 z...