首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

大家好,我是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')

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

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

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!")

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

三、总结

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

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

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O_Xi4w3HozVDnX5WfH2wfcMg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券