1946年,世界上第一台通用计算机“ENIAC”在美国宾夕法尼亚大学诞生;“ENIAC”占地170平方米,重达30吨,耗电功率约150千瓦,每秒钟可进行5000次运算,这个庞然大物用于美国国防部进行弹道计算。
在当时,计算机只是被用于了特殊部门。现如今已过60余年,人类在计算机发展进程中越走越远,技术的发展使价格越加便宜,体积也更加便于携带,计算机随之出现在了各行各业之中。在第47期《中国互联网络发展状况统计报告》中提到,截至2020年12月,中国网民数量达到9.89亿,互联网普及率达到70.4%,如此多的用户必然有着巨大的商业市场,所需要的计算机应用程序也越加多样,那么创造这些计算机应用程序就需要进行程序编写。
在计算机中,编写程序需要使用计算机编程语言,由于种类及针对性不同,计算机语言存在上百种,那对于目前日益复杂的办公需求,到底什么语言才可以提高我们的办公效率呢?如今有了一个答案,这个热门的语言叫做 python,python 拥有着众多的第三方库,或者说这些库就是已经实现好的功能,正等着你去使用它,完成你需要的定制功能;我们只需要学会 python 基础语法,既可以在办公中提高自己的工作效率。
今天这篇文章将会模拟解决 10 个办公需求为主要内容,带读者感受 python 的魅力;当然,读者也可以从本篇文中直接得到这 10 个问题解决办法。本篇文将要解决的 10 个办公需求如下:
上班第一天,老板叫我从一堆文本信息中提取出手机号码,我改如何去做?
上班第二天,领导叫我将第一天提取的电话号码存储到 Excel 中,我是如何快速解决的。
上班第三天,今天叫我去文本中提取邮箱了,给了我一天时间,但我玩了半天才开始进行信息提取。
上班第四天,今天给了我一堆图片,让我加上公司水印。
上班第五天,前同事的电脑中太多重复文件,领导让我清理重复文件精简信息。
上班第六天,领导跟我说数一下这个文本到底有多少个中文字符。
上班第七天,帮助美工小姐姐将网址生成二维码图片。
上班第八天,如何将图片生成 gif?我手到擒来。
上班第九天,人事急匆匆的找到我让我急忙翻译一份英文文档,我立马答应下来。
上班第十天,提取视频的音频信息并且升职加薪!
上班第一天
上班第一天,你的上级给你一堆文本文件,叫你去提取出手机号码。如果是常规的办公人员,获取信息会一个个的去文本中查找,但在如今计算机深度普及的时代,显然提高办公效率解放自身才是更好的选择;那么这时,就让 python 祝你一臂之力,在职场腾飞吧。
首先我们可以考虑,文本文件为 txt 的后缀文件,这个文本文件第一件事情则是需要读取;读取文本信息需要使用 python 的 open 函数,此时创建一个 python 文件名为 day1.py 编写一个函数名为 get_str,传入参数为需要读取到的文件路径,该函数返回读取到的内容,函数代码如下:
#读取目标文本文件
def get_str(path):
f = open(path,encoding="utf-8")
data = f.read()
f.close()
return data
此时已经编写好了读取文本内容函数,那么接下来就应该需要在这个读取到的值之中提取电话号码,提取电话号码使用正则,在此不过多说明正则的使用用法;使用正则我们需要使用 re模块;引入 re 模块后,调用 re 模块的 findall 方法对电话号码进行读取,然后进行返回:
import re
#正则获取文本号码
def get_phone_number(str):
res = re.findall(r'(13\d{9}|14[5|7]\d{8}|15\d{9}|166{\d{8}|17[3|6|7]{\d{8}|18\d{9})', str)
return res
那么最后一步就还剩保存信息。保存信息创建一个函数名为 save_res,传入两个参数分别是提取号码的结果以及保存文件的路径,之后遍历结果使用 write 方法写入即可,该函数代码如下:
#保存得到号码
def save_res(res,save_path):
save_file = open(save_path, 'w')
for phone in res:
save_file.write(phone)
save_file.write('\n')
save_file.write('\n号码共计:'+str(len(res)))
save_file.close()
print('号码读取OK,号码共计:'+str(len(res)))
那么最后一步就还剩如何如何调用已创建的代码。此时使用 input 接收两个输入值;一个为需要读取的目标文件路径,另一个为需要保存结果的文件路径,之后依次调用函数即可,代码如下:
path=input("请输入文件路径:")
save_path=input("请输入文件保存路径:")
#read_str=get_str(path)
res=get_phone_number(get_str(path))
save_res(res,save_path)
此时我们创建 1 个 txt 文件用于测试,文件名及后缀为 phone.txt,内容为:
张三:15888888888
李四:15888888888
王五:15888888888
草帽:15888888888
李四:15888888888
柳叶:15888888888
柳叶:15888888888
李四:15888888888
柳叶:15888888888
柳叶:15888888888
李四:15888888888
柳叶:15888888888
柳叶:15888888888
李四:15888888888
柳叶:15888888888
李四:15888888888
李四:15888888888
柳叶:15888888888
接下来在 DOS 中运行 python 文件 day1,输入文件存储路径以及保存路径,当完成信息提取后将会有提示:
此时到保存的文件 res.txt 查看,发现电话号码信息已经被提取:
此时第一天的工作轻松搞定,并且还可以把脚本分享给同事,提高自己的形象,岂不美哉?
上班第二天
上班第二天,新分配给你的任务是将第一天的 phone.txt 文本使用 Excel 保存,此时如果该文本是上万条信息,可能你独自手动操作将会耗时非常久才能完成这个任务,并且大概率有遗漏。这时使用 python 进行自动化操作将会极大的减少你操作的时间,并且在程序正确的情况下遗漏数据概率极低。那 python 是否可以胜任第二天的功能呢?答案当然是“能!”。python 有一个第三方库叫做 xlwt,通过 xlwt 可以自动将数据保存到 Excel 文件中,接下来我们来看一下具体如何解决。
首先创建一个 python 文件名为 day2.py,在头部引入 xlwt:
import xlwt
由于我们当前所需要的数据是第一天任务用到的,在这里我们继续使用第一天所用使用到的 get_str 函数:
#读取目标文本文件
def get_str(path):
f = open(path,encoding="utf-8")
data = f.read()
f.close()
return data
接着我们创建一个函数名为 save_excel,该函数功能包括了保存文件、设置 sheet 名、设置列名以及设置列值。save_excel 函数接收 4 个参数,分别为 save_path、sheetname、column_name_list、content。首先我们在函数内创建一个 Workbook 对象:
def save_excel(save_path,sheetname,column_name_list,read_list):
workbook = xlwt.Workbook()
接着在函数体中使用 add_sheet 增加一个 sheet,add_sheet 函数接收一个参数为 sheet 名称,我们将接收的 sheetname 参数作为 sheetname 的值,add_sheet 函数将会返回创建的这个 sheet 对象,代码写为:
sheet1 = workbook.add_sheet(sheetname=sheetname)
接收完参数后,我们可以使用 for 循环将传递过来的列名 column_name_list 在该 sheet 上进行设置:
for i in range(0,len(column_name_list)):
sheet1.write(0,i,column_name_list[i])
以上代码中 write 方法第一个参数为 sheet 的第几行,这里为 0 即为最开始的一行;参数 i 为第几列,由于 i 是从 0 开始到当前列元素长度位置进行对 column_name_list 的遍历,此时则是从 0 到 column_name_list 的最后一个元素,那么将会从最开头的列到对应最尾的列,则将所有列名填写值 sheet 页头部。
接着就应该为这些列设置元素了。此时遍历传递过来的 read_list,read_list 为这些列的具体内容,例如姓名与电话号码。此时遍历 read_list 由于原始数据每一行将会是以 : 作为姓名与电话分隔,例如 “张三:15888888888”,这时遍历 read_list 列表应该将值再进行分隔,以列名设置同理进行赋值,在此不再赘述,代码如下:
i=1
for v in read_list:
kval=v.split(':')
for j in range(0,len(kval)):
sheet1.write(i+1,j,kval[j])
print(kval[j])
i=i+1
最后使用 workbook 对象调用 save 方法,传递保存地址即可。那么该 save_excel 自定义函数完整代码如下:
#保存为Excel文件
def save_excel(save_path,sheetname,column_name_list,read_list):
workbook = xlwt.Workbook()
sheet1 = workbook.add_sheet(sheetname=sheetname)
for i in range(0,len(column_name_list)):
sheet1.write(0,i,column_name_list[i])
i=1
for v in read_list:
kval=v.split(':')
for j in range(0,len(kval)):
sheet1.write(i+1,j,kval[j])
i=i+1
workbook.save(save_path)
print('信息保存 OK,记录条数共计:'+str(len(read_list)))
此时已经完成了主要功能的编写,那么接下来就应该接受用户输入 文件路径、文件保存路径、sheetname、列名 以及对原始数据用换行符 “\n” 作为列表分隔符,调用部分完整代码如下:
path=input("请输入文件路径:")
save_path=input("请输入文件保存路径:")
sheet_name=input("请输入sheetname:")
column_name=input("请输入列名,并且使用英文逗号隔开:")
column_name_list=column_name.split(',')
read_str=get_str(path)
read_list=read_str.split('\n')
save_excel(save_path,sheet_name,column_name_list,read_list)
此时运行 day2.py 文件,输入完所需内容将会出现成功提示:
随后在保存的文件中可以看到提取出来的信息:
由于篇幅有限,点赞评论超过十个咱就继续更新把,没人看就算啦!
如何获取源码:
①3000多本Python电子书有 ②Python开发环境安装教程有 ③Python400集自学视频有 ④软件开发常用词汇有 ⑤Python学习路线图有 ⑥项目源码案例分享有 如果你用得到的话可以直接拿走,在我的QQ技术交流群里群号:754370353(纯技术交流和资源共享,广告勿入)以自助拿走 点击这里 领取