Python改善生活 | 轻松实现APP自动化记账
????????关注后回复 “进群” ,拉你进程序员交流群????????
大家好,我是小五????
相信大部分人对于Python并非想掌握全栈知识,往往只是为解决工作/生活中的某些问题才开始学习的。
所以我打算写一些文章,介绍我从开始学Python到现在,写过的一些小工具/小技巧。好多都是我现在还在使用的,它们极大地节约了我的时间并提升工作效率。如果大家喜欢,请多多点赞支持,我会继续写这个系列的。
注:文中代码写的较早,可能不太简洁,大家主要理解思路即可
正文开始:
前情回顾
hi,我是小五
不知道大家有没有手动记账的习惯,我大概从大学开始就坚持记账,中途也换过几个账本APP。目前使用的是圈子账本
,它的记账界面如下图所示:
再说说我现在的情况,毕业之后支出越来越多越琐碎,每月的账单多到再手动记账有些过于浪费时间了。
不过有几点让我注意到了,似乎可以实现自动化记账:
一是我目前支出首选信用卡(支付宝、微信也绑定信用卡),几乎全部支出都在这里;
二是圈子账本可以通过上传模板文件来直接上传账单,现在也支持支付宝账单了;
三是我的支出类别比较单一,主要就下面几种:
折中方案
根据上面的几点,我搞了个折中的方案,并一直用到现在。
就是电脑登录信用卡官网,手动复制或者下载账单。
然后使用python调整成账本官网支持的格式,导出成excel格式,直接上传至官网。
下面给大家对比一下操作前和操作后的格式:
信用卡里的账单:
官网规定格式:
操作实战
先手动复制账单到excel里,先命名为测试数据.xlsx
。
然后我们开始使用python处理,导入数据
df = pd.read_excel('测试数据.xlsx',header = None)
df.head(6)
????每隔三行其实是一条数据,所以我们要跳行提取数据
df2 = pd.DataFrame(columns=['日期','时间','入账金额','交易说明'])df2['日期'] = df.iloc[[ i+1 for i in range(0,len(df),3)],[0]].reset_index()[0]
df2['时间'] = df.iloc[[ i+2 for i in range(0,len(df),3)],[0]].reset_index(drop=True)
df2['入账金额'] = df.iloc[[ i+1 for i in range(0,len(df),3)],[1]].reset_index(drop=True)
df2['交易说明'] = df.iloc[[ i+2 for i in range(0,len(df),3)],[1]].reset_index(drop=True)
创建了一个df2
,并从df
中隔行提取数据,结果如下
调整格式
下一步调整格式,先参考目标格式要求:
df2['时间'] = df2['日期'].apply(lambda x : str(x).replace('00:00:00','')) + df2['时间'].apply(lambda x : str(x)[:-3])
df2['入账金额'] = df2['入账金额'].str.lstrip('入账金额:¥')
df2['交易说明'] = df2['交易说明'].str.lstrip('交易说明:财付通公司-')
df2 = df2.drop(columns = '日期')
这样我们就调整好了时间
、入账金额(金额)
、交易说明(备注)
,还剩下一个关键的值就是类别,其实我自己的消费类别没几个,可以简单的利用交易说明判断类别,无法分辨的类别归为其他。
def fenlei(comment):if '美团' in comment or '拉扎斯'in comment:data = "餐饮"elif '花小猪'in comment or '滴滴'in comment:data = "交通"elif '燃气'in comment or '电费'in comment:data = "水电燃气"elif '拼多多'in comment:data = "生活用品"else:data = "其他"return data
利用上面的函数,就可以统计出类别
这一列的值。
其中拉扎斯指的是饿了么,大家查一下自己账单就知道了。至于其他的种类,大家根据自己实际情况改改就可。
另外再添加另外两个固定列,就齐了。
df2['分类'] = df2.apply(lambda x :fenlei(x['交易说明']), axis=1)
df2 = df2[df2['入账金额'].astype(float) > 0]
df2['类型'] = '支出'
df2['账户'] = '交通银行'
df2.head()
????这里面我还筛选了只大于0的入账金额
,这是为了排除还款记录。
注:还款记录在信用卡账单里是负值
最后结果如下图所示:
导出数据
由于这次导出数据要固定格式,所以使用了openpyxl
来向官网模板中直接写入,这样导入比较规范。
workbook = load_workbook(filename="朱小五.xlsx")
sheet = workbook.active
df2 = df2.iloc[:,[4,0,3,1,5,2]]
# 先删除第4行之后的旧数据,预计1000行完全够用
sheet.delete_rows(idx=2, amount=1000)
# 然后在进行添加数据
for row in df2.values.tolist():sheet.append(row)print(row)
print("已经保存到文件中")
workbook.save(filename="朱小五.xlsx")
workbook.close()
打开朱小五.xlsx
,查看结果
没什么问题,将Excel
导入账本官网中
完美导入
再打开手机记账APP
发现账单已经安安静静地躺在账本里啦!
以上就是小五平时利用Python自动化处理自己账本的全部内容了。
如果喜欢我的文章,记得点赞支持哦~
-End-
最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!
点击????卡片,关注后回复【面试题
】即可获取
在看点这里好文分享给更多人↓↓
Python改善生活 | 轻松实现APP自动化记账相关推荐
- APP自动化简单理解(在python中实现简单的app自动化框架)
一.app自动化环境搭建 1.安装jdk及配置jdk的环境变量 app底层是c语言,应用层是java,所以需要jdk 2.安装SDK,配置android SDK环境 3.安装模拟器 4.下载安装App ...
- Python改变生活 | 轻松识别数百个快递单号
今天是Python改变生活系列的第一篇,也是一个与你们有关的问题案例 前情提要 了解我的小伙伴可能都知道,小五经常给大家送书.最近一年,不算联合抽奖送书,单独我自购+出版社赞助已送出1000本书籍. ...
- python利用appium实现手机APP自动化
写这个东西也是自己喜欢研究些自动化的东西,以下全是自己的经验所得,由于开源的软件对于各版本以及操作系统要求很高,会经常碰到一些不兼容的问题,这个都属于正常的,换版本就对了. 如果你感觉学不会?莫慌,小 ...
- Appium+python实现App自动化登录
Appium+python实现App自动化登录 以下是个人用Appium + python写的第一个App自动化案例,仅做单页面,比较简单,后续将涉及到主功能模块化,需使用到功能时调用即可. 获取设备 ...
- Python改变生活 | OCR识别的花样使用
这是Python改变生活系列的第四篇,在上文Python改变生活 | 轻松识别数百个快递单号_中讲了一个需求的解决办法,即用python识别条形码来获取快递单号. 该问题我一共想了两个方案,所以今天接 ...
- python自动汇总excel_RPA手把手:Python轻松实现EXCEL自动化
原标题:RPA手把手:Python轻松实现EXCEL自动化 了解RPA请访问: www.i-search.com.cn 艺赛旗-RPA机器人免费下载: www.i-search.com.cn/inde ...
- pythonapp自动化_GitHub - qdyxmas/PyAutoTest: python Autotest UI自动化 APP自动化 HTTP接口自动化...
PyAutoTest自动化平台 1.环境搭建 1.1 下载或拷贝整个PyAuthoTest到指定的目录,如D:\PyAuthoTest 1.2 安装Python2.7以及需要使用到的安装包列表如下 r ...
- python自动化(四)app自动化:7.专项测试讲解
一.常见的测试手段 二.专项测试的种类 三.APP的启动性能 1.启动性能介绍 启动分为冷启动和热启动,首页启动. 冷启动:应用程序首次启动,进程首次创建并加载资源的过程: 热启动:应用程序启动后点& ...
- Python+Appium APP自动化环境搭建
Python+Appium之APP自动化环境搭建 1.安装node.js (1)一直点击下一步即可 (2)配置环境变量 (3)输入npm --version 安装成功 2.安装appium-docto ...
最新文章
- 利用SQL索引提高查询速度
- 关于E1的一些扫盲资料
- 如何在CRM和C4C中用代码判断当前是否处于configuration模式
- vue接收json数据_Vue之使用ajax获取json数据,并用v-for循环显示在表格中
- HTTP权威指南记录 ---- 网络爬虫
- 无线安全 - 802.1x 和 EAP 类型
- IntelliJ IDEA中Maven项目的默认JDK版本
- java 小票打印_java 调收银机打印小票
- 小米12系列或首发骁龙898旗舰芯:三星4nm工艺
- Node.js:中间件——express简单的错误处理日志中间件
- Win7 关闭触摸屏 屏幕键盘功能
- Unity灯光烘焙系统
- Xposed 模块编写
- Clover使用笔记(持续更新)
- 从虎胆龙威4(live free or die hard)说黑客攻击
- 【考研数学】概率论 - 随机事件和概率
- 论文翻译1-PARSEC-Streaming 360-Degree Videos Using Super-Resolution
- PaddleDetection复现笔记
- 7620a路由mysql,7620A路由求助 - 新手入门及其它(软件) - 恩山无线论坛 - Powered by Discuz!...
- input自动填充-Autocomplete