当前位置: 首页 > article >正文

Python自动化办公实战案例分享

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

气蒸云梦泽,波撼岳阳城。

大家好,我是Python进阶者。

一、前言

前几天在粉丝群有个粉丝问了一个Python自动化办公的问题,这里拿出来给大家一起分享下。粉丝需求如下:

1、我有一个合同表格,里边有很多合同名称,但是合同,名称还需要做一些额外的处理,比方说正则表达式提起合同具体的名称、针对合同名称还需要替换当中的【第】、【批】字符等,最后得到合同名称。2、针对合同名称,我们需要读取,然后根据合同名称,去目标文件夹中匹配对应的合同,并且实现移动。

看上去这个需求不是特别难,就是繁琐一些,这里给大家一起分享下。

二、实现过程

这里实现的代码,如下所示:

import pandas as pd
import re

# df = pd.read_excel("test.xlsx")
# df["合同名称"] = df["合同名称"].str.replace("订单(", "")
# df["合同名称"] = df["合同名称"].str.replace(")", "")
# print(df["合同名称"].head(5))

# text = "xxx(2022年)xxx订单订单(xxx第十三批)"
# pattern = r'\(.*?\)'
# res = re.findall(pattern, text)
# print(res[1])

from chinesenumber import NumberParser
numberparse =NumberParser()


df = pd.read_excel("test.xlsx")
# df["合同名称"] = df["合同名称"].str.extract(r"((.*?))")
df["合同名称"] = df["合同名称"].str.extract(r"(.*?).*?((.*?))")
df["合同名称_new1"] = df["合同名称"].apply(lambda x: numberparse.numberify(x))
# df["合同名称_new2"] = df["合同名称_new1"].str.sub("第", "").sub("批", "")
# df["合同名称_new2"] = df["合同名称_new1"].str.replace("第", "").str.replace("批", "")
df['合同名称_new2'] = df['合同名称_new1'].str.replace(r'(第|批)', '', regex=True)
print(df["合同名称_new2"])
df.to_excel('test1.xlsx')

得到的最后的合同名称如下所示:b07ea1f70ba11729b91e9469852dce46.png

接下来就需要完成第二部,去原始文件夹中匹配目标文件,并且实现移动到新的文件夹下。

import pandas as pd
import re
import os
import shutil


def copy_file(file_name):
    # (root,dirs,files)分别为:遍历的文件夹,遍历的文件夹下的所有文件夹,遍历的文件夹下的所有文件
    for root, dirs, files in os.walk(source_path):
        for file in files:
            if file_name in file:  # 多了一层限定条件
                print(file)
                shutil.copyfile(root + '\\' + file, target_path + '\\' + file)
                print(root + '\\' + file + ' 复制成功-> ' + target_path)


if __name__ == '__main__':
    # 文件夹路径
    source_path = r'xxx\source_path'
    # 输出路径
    target_path = r'C:\Users\Desktop\res'

    df = pd.read_excel("test1.xlsx")
    df["合同名称_new2"] = df["合同名称_new2"].apply(lambda x: copy_file(x))
    print("over!")

可以看到文件已经顺利地完成既定的移动,顺利地完成粉丝的需求。

68828bb028242f2e3d3be554ee5d1aed.png

经过指导,这个方法顺利地解决了粉丝的问题。如果你还有方法,也欢迎多多交流~

如果你也有类似这种数据分析的小问题,欢迎随时来交流群学习交流哦,有问必答!

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Python自动化办公的需求,帮助粉丝顺利解决了问题。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。

959fcad4036f7f8114dd9200af039776.png

大家在学习过程中如果有遇到问题,欢迎随时联系我解决(我的微信:pdcfighting1),应粉丝要求,我创建了一些ChatGPT机器人交流群和高质量的Python付费学习交流群和付费接单群,欢迎大家加入我的Python学习交流群和接单群!

5b03fc218cbef7c0907b47d86a8ee79c.png

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

83f35d3b2286dfb16e9e310da2744b58.jpeg

------------------- End -------------------

往期精彩文章推荐:

  • 盘点一个Pandas实现Excel判断写法的问题

  • Pandas实现这列股票代码中10-12之间的股票筛出来

  • 从5亿行数据中,筛选出重复次数在1000行的数据行,也爆内存了

  • Python自动化办公——3个Excel表格中每个门店物品不同,想要汇总在一起(方法五)

8bdcabc92ffa1acfaa6b30fbf50f155b.png

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~


http://www.kler.cn/news/233982.html

相关文章:

  • 学习Android的第九天
  • 【Zookeeper】what is Zookeeper?
  • 20240210使用剪映识别字幕的时候的GPU占比RX580-RTX4090
  • 2024刘谦春晚第二个扑克牌魔术
  • 算法学习——LeetCode力扣栈与队列篇2
  • 【JavaScript】对象的属性和方法
  • python-分享篇-GUI界面开发-PyQt5-对QListWidget表格进行数据绑定
  • 小兔鲜项目网页版
  • STL之list容器的介绍与模拟实现+适配器
  • 【C语言】指针专项练习 都是一些大厂的笔试真题 附有详细解析,带你深入理解指针
  • kubernetes镜像仓库harbor
  • WebSocketServer+redis实时更新页面数据
  • 北斗卫星在物联网时代的应用探索
  • 【漏洞复现】狮子鱼CMS某SQL注入漏洞
  • std::vector<cv::Mat>和unsigned char** in_pixels 互相转换
  • 一周学会Django5 Python Web开发-Django5创建项目(用PyCharm工具)
  • 【翻译】Processing安卓模式的安装使用及打包发布(内含中文版截图)
  • 酷开科技荣获消费者服务平台黑猫投诉“消费者服务之星”称号
  • 任意IOS16系统iPad/Iphone开启台前调度
  • OpenCV-35 查找轮廓
  • Nginx 配置 SSL证书
  • 【JavaScript】数组的创建和操作
  • Xampp中Xdebug的安装使用
  • 大数据思考:面对海量数据时,选择哪种模式才是更适合自己的?
  • 深入探索Redis:如何有效遍历海量数据集
  • 在容器镜像中为了安全为什么要删除 setuid 和 setgid?
  • Java图形化界面编程——菜单组件 笔记
  • 【EAI 014】Gato: A Generalist Agent
  • 1.6 Binance_interface API 现货交易账户
  • QT+OSG/osgEarth编译之八十二:osgdb_obj+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_obj)