Python脚本把支付宝和微信账单数据转换成随手记APP的excel标准模板导入

实现初衷

    1. 每天通过手动记账太麻烦,而且要精细到每一项支付的内容,每天坚持记账不仅考验恒心还得考验耐心
    1. 随手记app有自带的支付宝账单导入功能,但是貌似数据不全,好像也不支持微信
    1. 以下的实现只统计了支出的数据,因为我收入只有工资,直接手打一项就好了

下载账单流水

微信账单

  • 打开手机微信app,找到"我"->“服务”->“钱包”->“账单”->“常见问题”->“下载账单”->“用于个人对账”
    在这里插入图片描述

支付宝账单

  • 打开手机支付宝app,找到"我的"->“账单”->右上角"***"->“开具交易流水证明”->“用于个人对账”
    在这里插入图片描述

处理数据

账单文件命名及存放

上步操作完从邮箱可以拿到对应的微信和支付宝账单
其中账单是csv格式,需要放在python脚本的同级目录下,同时我们需要手动重命名一下
在这里插入图片描述

执行Python脚本

双击run.bat执行脚本
在这里插入图片描述
执行成功后,生成两份文件
在这里插入图片描述

随手记导入数据

查看账单

也可以在手机端随手端app查看,我这是在网页版查看,同理支付宝操作跟微信一样,再导入支付宝数据就可以看了在这里插入图片描述

代码实现

微信的脚本

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# author: rzhao

import csv

import xlrd
from xlutils.copy import copy

head_content = ['交易时间', '交易类型', '交易对方', '商品', '收/支', '金额(元)', '支付方式', '当前状态', '交易单号', '商户单号', '备注']

def wei_xin_sort(s):
    sort_list = {"购物": ["淘宝", "美团", "拼多多", "京东", "唯品会"],
                 "出行": ["滴滴出行", "加油站", "广东联合电子服务股份有限公司", "停车缴费"],
                 "医疗": ["医院", "药品"]}
    for (a, b) in sort_list.items():
        for i in b:
            if i in s[head_content.index("商品")]:
                return a, i
    return "其他", s[head_content.index("商品")]


# 打开随手记模板文件
read_book = xlrd.open_workbook(r"./template.xls", formatting_info=False)

# 根据sheet索引或者名称获取sheet内容
r_wei_xin_sheet = read_book.sheet_by_index(0)
head = r_wei_xin_sheet.row_values(0)  # 获取第一行的表头内容
print(head)
index = head.index('交易类型')  # 获取交易类型列所在的列数

# 拷贝一份用于写
write_wei_xin_book = copy(read_book)
wei_xin_sheet = write_wei_xin_book.get_sheet(0)

# 打开微信的账单文件
csv_file = csv.reader(open('./wechat.csv', encoding='UTF-8'))
count = 0
print(head_content.index("收/支"))
r = 1  # 行数
for line in csv_file:   # 数据类型是列表
    if count >= 17 and "支出" in line[head_content.index("收/支")]:
        # print(line)
        wei_xin_sheet.write(r, head.index("交易类型"), "支出")
        wei_xin_sheet.write(r, head.index("日期"), line[head_content.index("交易时间")])
        wei_xin_sheet.write(r, head.index("金额"), line[head_content.index("金额(元)")][1:])
        sort_main_sub = wei_xin_sort(line)
        print(sort_main_sub)
        wei_xin_sheet.write(r, head.index("分类"), sort_main_sub[0])
        wei_xin_sheet.write(r, head.index("子分类"), sort_main_sub[1])
        wei_xin_sheet.write(r, head.index("商家"), line[head_content.index("交易对方")])
        wei_xin_sheet.write(r, head.index("项目"), line[head_content.index("商品")])
        wei_xin_sheet.write(r, head.index("账户1"), "微信")
        r += 1
    count += 1
write_wei_xin_book.save("./wei_xin.xls")

支付宝的脚本

# !/usr/bin/env python
# -*- coding:utf-8 -*-
# author: rzhao
import codecs
import csv

import xlrd
from xlutils.copy import copy


def zhi_fu_sort(s):
    sort_list = {"购物": ["淘宝", "美团", "拼多多", "京东", "唯品会"],
                 "出行": ["滴滴出行", "加油站", "广东联合电子服务股份有限公司", "停车缴费"],
                 "医疗": ["医院", "药品"]}
    if "淘宝" in s[4]:
        return "购物", "淘宝"
    else:
        for (a, b) in sort_list.items():
            for i in b:
                if i in s[6]:
                    return a, i
    return "其他", s[6]


# 打开随手记模板文件
read_book = xlrd.open_workbook(r"./template.xls", formatting_info=False)

# 根据sheet索引或者名称获取sheet内容
r_zhi_chu_sheet = read_book.sheet_by_index(0)
head = r_zhi_chu_sheet.row_values(0)  # 获取第一行的表头内容
print(head)
index = head.index('交易类型')  # 获取交易类型列所在的列数

# 拷贝一份用于写
write_zhi_fu_bao_book = copy(read_book)
zhi_chu_sheet = write_zhi_fu_bao_book.get_sheet(0)

# 打开支付宝的账单文件
with codecs.open('./alipay.csv') as f:
    r = 1  # 行数
    for row in csv.DictReader(f, skipinitialspace=True):
        for (k, v) in row.items():
            # 原始row中有很多空格,给去除一下
            new_row = [x.strip() for x in v if x.strip() != '']
            if k is None:
                if len(v) == 16 and "支出" in new_row[9]:
                    # print(new_row)
                    zhi_chu_sheet.write(r, head.index("交易类型"), "支出")
                    zhi_chu_sheet.write(r, head.index("日期"), new_row[1])
                    zhi_chu_sheet.write(r, head.index("金额"), new_row[8])
                    sort_main_sub = zhi_fu_sort(new_row)
                    print(sort_main_sub)
                    zhi_chu_sheet.write(r, head.index("分类"), sort_main_sub[0])
                    zhi_chu_sheet.write(r, head.index("子分类"), sort_main_sub[1])
                    zhi_chu_sheet.write(r, head.index("商家"), new_row[6])
                    zhi_chu_sheet.write(r, head.index("项目"), new_row[7])
                    zhi_chu_sheet.write(r, head.index("账户1"), "支付宝")
                    r += 1
    write_zhi_fu_bao_book.save("./zhi_fu_bao.xls")

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值