简介

本文介绍如何使用Python将微信和支付宝账单转换为可以导入随手记的文件,实现微信和支付宝账单的批量导入。

需求:

1、需要将支付宝和微信上的支出账单自动或半自动地导入到随手记中

已知信息:

1、支付宝和微信的app端都可以导出csv格式的账单

2、随手记web版支持导入账单

  • 虽然官方提供了支付宝账单和财付通账单的导入方法,但是有人试过实际上不太行。看了一眼不符合笔者的需求:我是想导入所有的支出(不管是支付宝余额支出还是通过支付宝的银行卡支出),而支付宝官网导出的账单好像只有支付宝本身余额相关的账单(具体没细看)
  • 随手记提供了导入模板,只要按照模板填写数据就可以快速导入

3、其他需要注意的信息

  • 新版的随手记的账本分为随手记原生账本和神象云账本。两种账本的导入地址是不一样的。

    • 随手记:随手记——记账就要随手记!随手记免费为您提供:网上账本,预算控制,在线理财,网上记账,账单同步等服务
    • 神像云:随手记企业版——360行,行行随手记

解决思路 

将微信和支付宝导出的csv文件,用代码读出来并写入随手记的模板文件中,再将文件导入到随手记。

代码实现:

注意点:

  • app上导出的csv文件除了账单外还有一些说明问题,需要把这些说明文字删掉
  • 随手记上下载下载的模板文件里面也有一些示例记录,这些也应该删掉

代码比较简单。注意下我这里是只关注了支出的账单,如果你需要关注其他类型的账单可以自己修改代码。见下:

支付宝账单处理:

from tkinter.messagebox import NO
import xlrd
import xlwt
from xlutils.copy import copy
from datetime import date, datetimeimport codecs
import csv# 打开随手记模板文件
read_book = xlrd.open_workbook(r"./template.xls", formatting_info=False)# 获取所有的sheet
print("所有的工作表:", read_book.sheet_names())
r_zhichu_sheet = read_book.sheet_names()[0]# 根据sheet索引或者名称获取sheet内容
r_zhichu_sheet = read_book.sheet_by_index(0)# sheet1的名称、行数、列数
print("工作表名称:%s,行数:%d,列数:%d" %(r_zhichu_sheet.name, r_zhichu_sheet.nrows, r_zhichu_sheet.ncols))
head: list = r_zhichu_sheet.row_values(0)  # 获取第一行的表头内容
print(head)
index = head.index('交易类型')  # 获取交易类型列所在的列数# 拷贝一份用于写
write_book = copy(read_book)
zhichu_sheet = write_book.get_sheet(0)
assert (zhichu_sheet.get_name(), "支出")# 支付宝的账单分类与随手记账单分类的映射
# 可以根据你的账本自定义
type_dict = {"交通出行": ("行车交通", "公共交通"),"餐饮美食": ("食品酒水", "早午晚餐"),"其他": ("其他杂项", "其他支出"),"亲友代付": ("其他杂项", "亲友代付"),"食品酒水": ("食品酒水", "早午晚餐"),"充值缴费": ("交流通讯", "手机费"),"日用百货": ("购物消费", "家居日用"),"服饰装扮": ("购物消费", "衣裤鞋帽"),"文化休闲": ("休闲娱乐", "电影"),"住房物业": ("居家生活", "物管费"),"生活服务": ("食品酒水", "早午晚餐"),"医疗健康": ("医疗教育", "药品费"),}def get_type(alipy_type):ssj_type = type_dict.get(alipy_type)if ssj_type == None:  # 否则返回默认的ssj_type = (alipy_type, "")return ssj_type# 打开支付宝的账单文件
with codecs.open('./alipay.csv') as f:r = 1  # 行数for row in csv.DictReader(f, skipinitialspace=True):# print(row)# 原始row中有很多空格,给去除一下new_row = {}for k in row:new_row[k.strip()] = row[k].strip()print("write:", new_row)zhichu_sheet.write(r, head.index("交易类型"), "支出")zhichu_sheet.write(r, head.index("日期"), new_row["交易时间"])ssj_type = get_type(new_row["交易分类"])zhichu_sheet.write(r, head.index("分类"), ssj_type[0])zhichu_sheet.write(r, head.index("子分类"), ssj_type[1])zhichu_sheet.write(r, head.index("账户1"), "支付宝")# zhichu_sheet.write(r,head.index("账户2"),"支出")zhichu_sheet.write(r, head.index("金额"), new_row["金额"])zhichu_sheet.write(r, head.index("商家"), new_row["交易对方"])zhichu_sheet.write(r, head.index("备注"), new_row["商品说明"])r += 1
write_book.save("output.xls")

微信账单处理:

from tkinter.messagebox import NO
import xlrd
import xlwt
from xlutils.copy import copy
from datetime import date, datetimeimport codecs
import csv# 打开随手记模板文件
read_book = xlrd.open_workbook(r"./template.xls", formatting_info=False)# 获取所有的sheet
print("所有的工作表:", read_book.sheet_names())
r_zhichu_sheet = read_book.sheet_names()[0]# 根据sheet索引或者名称获取sheet内容
r_zhichu_sheet = read_book.sheet_by_index(0)# sheet1的名称、行数、列数
print("工作表名称:%s,行数:%d,列数:%d" %(r_zhichu_sheet.name, r_zhichu_sheet.nrows, r_zhichu_sheet.ncols))
head: list = r_zhichu_sheet.row_values(0)  # 获取第一行的表头内容
print(head)
index = head.index('交易类型')  # 获取交易类型列所在的列数# 拷贝一份用于写
write_book = copy(read_book)
zhichu_sheet = write_book.get_sheet(0)
assert (zhichu_sheet.get_name(), "支出")# 打开微信的账单文件
with codecs.open('./wechat.csv',encoding="utf-8") as f:r = 1  # 行数for row in csv.DictReader(f, skipinitialspace=True):# print(row)# 原始row中有很多空格,给去除一下new_row = {}for k in row:new_row[k.strip()] = row[k].strip()print("write:", new_row)# 只记支出if new_row["收/支"] == "收入":continue# 退款的不用记if new_row["当前状态"] == "已全额退款":continue# 转账不记if new_row["交易类型"] == "转账":continuezhichu_sheet.write(r, head.index("交易类型"), "支出")zhichu_sheet.write(r, head.index("日期"), new_row["交易时间"])# 微信的分类都比较杂,这里随便写写,导入后要手动分类zhichu_sheet.write(r, head.index("分类"), "其他杂项")zhichu_sheet.write(r, head.index("子分类"), "其他支出")zhichu_sheet.write(r, head.index("账户1"), "微信钱包")# zhichu_sheet.write(r,head.index("账户2"),"支出")zhichu_sheet.write(r, head.index("金额"), new_row["金额(元)"][1:])zhichu_sheet.write(r, head.index("商家"), new_row["交易对方"])zhichu_sheet.write(r, head.index("备注"), new_row["商品"])r += 1
write_book.save("wechat_output.xls")

使用Python将微信和支付宝账单导入随手记相关推荐

  1. python修改微信和支付宝步数

    python修改微信和支付宝步数 项目意义 实现方法 python代码 下载地址 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多 ...

  2. 教你用 Python 修改微信(支付宝)运动步数,轻松升到 TOP1

    ↑↑↑关注后"星标"简说Python 人人都可以简单入门Python.爬虫.数据分析 简说Python严选 作者:Tsubasa_Ou 来源:https://blog.csdn.n ...

  3. Python 修改微信(支付宝)运动步数,轻松 TOP1

    点击上方蓝色小字,关注"AI派" 重磅干货,第一时间送达 作者:Tsubasa_Ou https://blog.csdn.net/jiangfan2017/article/deta ...

  4. python response_用 Python 修改微信、支付宝运动步数,轻松拿到 TOP1!

    关注上方"Python数据科学",选择星标,关键时间,第一时间送达! ☞500g+超全学习资源免费领取  作者:Tsubasa_Ouhttps://blog.csdn.net/ji ...

  5. python如何把数放到ls里面_教你用 Python 修改微信(支付宝)运动步数,轻松升到 TOP1...

    1 项目意义 如果你想在支付宝蚂蚁森林收集很多能量种树,为环境绿化出一份力量,又或者是想每天称霸微信运动排行榜装逼,却不想出门走路,那么该 python 脚本可以帮你实现. 2 实现方法 手机安装第三 ...

  6. python response_教你用 Python 修改微信(支付宝)运动步数,轻松升到 TOP1

    今天分享的文章让你霸屏微信运动,横扫支付宝榜单 1 项目意义 如果你想在支付宝蚂蚁森林收集很多能量种树,为环境绿化出一份力量,又或者是想每天称霸微信运动排行榜装逼,却不想出门走路,那么该 python ...

  7. python数字推盘游戏怎么显示步数_用 Python 修改微信(支付宝)运动步数,轻松 TOP1...

    原标题:用 Python 修改微信(支付宝)运动步数,轻松 TOP1 作者:Tsubasa_Ou 今天分享的文章让你霸屏微信运动,横扫支付宝榜单 1 项目意义 如果你想在支付宝蚂蚁森林收集很多能量种树 ...

  8. 通过python刷android步数,使用 Python 修改微信/QQ/支付宝运动步数

    如果你想在支付宝蚂蚁森林收集很多能量种树,为环境绿化出一份力量 又或者是想每天称霸微信运动排行榜装逼,却不想出门走路 如上图所示,其实很简单用 Python 就能实现 如果你不懂执行脚本,也没关系,电 ...

  9. python代码怎么修改_python修改微信和支付宝步数的示例代码

    项目意义 如果你想在支付宝蚂蚁森林收集很多能量种树,为环境绿化出一份力量,又或者是想每天称霸微信运动排行榜装逼,却不想出门走路,那么该python脚本可以帮你实现. 实现方法 手机安装第三方软件乐心健 ...

最新文章

  1. CentOS7环境搭建使用PhpStorm上传代码
  2. 设计模式之装饰模式(Decorator)摘录
  3. oracle 唯一约束作用,想问下在表上建唯一索引和使用索引+唯一约束,从功能和性能来说有什么差别?...
  4. bzoj 1684: [Usaco2005 Oct]Close Encounter【数学(?)】
  5. redis 分布式锁的实现方式
  6. JSONObject 和 GSON 解析 JSON 数据详解(转)
  7. 酷冷至尊官方psu计算工具_一款精致的电源,轻松应付高端配置、酷冷至尊MWE750金牌全模组电源 体验...
  8. ​Java Map中那些巧妙的设计
  9. 如何修改select默认option数量多余显示滚动条查看_Chameleon for Mac(mac界面颜色修改工具)...
  10. c语言传入的指针无返回值,c语言 关于指针注意事项
  11. 再谈 document.documentElement 与 document.body 的 scrollWidth、offsetWidth、clientWidth
  12. 错误消息:'events' 为空或不是对象
  13. 超标量处理器设计 姚永斌 第6章 指令解码 摘录
  14. 我国计算机网络事业发展,我国计算机网络事业发展很快。据中国互联网络中心的一项统计显示【逻辑判断】...
  15. Transformer-M:一个能理解2D和3D分子的Transformer
  16. JAVA身份证阅读器数据返回图片
  17. 打开任务管理器的多种方法
  18. 【学习番外篇】Firefly ROC-RK3328-CC刷Ubuntu18.04+VNC
  19. 计算机语言 机器码,什么是机器码 机器码封了怎么解决-与非网
  20. Ubuntu16.04系统+GTX1050TI显卡的tensorflow1.6(GPU版)安装-详细图文

热门文章

  1. 计算机桌面图标不见了6,桌面图标不见了怎么办 如何找回桌面图标【解决方法】...
  2. buu-[WUSTCTF2020]level3
  3. APP下载链接在微信被屏蔽了 无法打开的解决方案
  4. 低成本搭建Time Machine 服务器
  5. numeric mysql_MYSQL的DECIMAL和NUMERIC类型
  6. 9大吸金手游公司盘点 2013年营收破1亿美元
  7. 合并两个工作表怎么做?
  8. 在有n个学生的成绩表里,每条信息由姓名与分数组成,要求:1按分数高低次序,输出每个学生的名字,分数相同的为同一名次,2按名次输出每个学生的姓名与分数。
  9. 戴尔易安信引领科技创新,以全面的端到端解决方案助力企业“数”造未来
  10. 读书笔记(II) 编译原理及实践