10个python办公黑科技

上班第一天
上班第一天,你的上级给你一堆文本文件,叫你去提取出手机号码。如果是常规的办公人员,获取信息会一个个的去文本中查找,但在如今计算机深度普及的时代,显然提高办公效率解放自身才是更好的选择;那么这时,就让 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
1
2
3
4
5
6

10个python办公黑科技
10个python办公黑科技
此时已经编写好了读取文本内容函数,那么接下来就应该需要在这个读取到的值之中提取电话号码,提取电话号码使用正则,在此不过多说明正则的使用用法;使用正则我们需要使用 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
1
2
3
4
5
6
那么最后一步就还剩保存信息。保存信息创建一个函数名为 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)))
1
2
3
4
5
6
7
8
9
那么最后一步就还剩如何如何调用已创建的代码。此时使用 input 接收两个输入值;一个为需要读取的目标文件路径,另一个为需要保存结果的文件路径,之后依次调用函数即可,代码如下:

path=input(“请输入文件路径:”)
save_path=input(“请输入文件保存路径:”)
#read_str=get_str(path)
res=get_phone_number(get_str(path))
save_res(res,save_path)
1
2
3
4
5
此时我们创建 1 个 txt 文件用于测试,文件名及后缀为 phone.txt,内容为:

张三:15888888888
李四:15888888888
王五:15888888888
草帽:15888888888
李四:15888888888
柳叶:15888888888
柳叶:15888888888
李四:15888888888
柳叶:15888888888
柳叶:15888888888
李四:15888888888
柳叶:15888888888
柳叶:15888888888
李四:15888888888
柳叶:15888888888
李四:15888888888
李四:15888888888
柳叶:15888888888
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
接下来在 DOS 中运行 python 文件 day1,输入文件存储路径以及保存路径,当完成信息提取后将会有提示:

此时到保存的文件 res.txt 查看,发现电话号码信息已经被提取:

此时第一天的工作轻松搞定,并且还可以把脚本分享给同事,提高自己的形象,岂不美哉?

上班第二天
上班第二天,新分配给你的任务是将第一天的 phone.txt 文本使用 Excel 保存,此时如果该文本是上万条信息,可能你独自手动操作将会耗时非常久才能完成这个任务,并且大概率有遗漏。这时使用 python 进行自动化操作将会极大的减少你操作的时间,并且在程序正确的情况下遗漏数据概率极低。那 python 是否可以胜任第二天的功能呢?答案当然是“能!”。python 有一个第三方库叫做 xlwt,通过 xlwt 可以自动将数据保存到 Excel 文件中,接下来我们来看一下具体如何解决。

首先创建一个 python 文件名为 day2.py,在头部引入 xlwt:

import xlwt
1
由于我们当前所需要的数据是第一天任务用到的,在这里我们继续使用第一天所用使用到的 get_str 函数:

#读取目标文本文件
def get_str(path):
f = open(path,encoding=”utf-8″)
data = f.read()
f.close()
return data
1
2
3
4
5
6
接着我们创建一个函数名为 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()
1
2
接着在函数体中使用 add_sheet 增加一个 sheet,add_sheet 函数接收一个参数为 sheet 名称,我们将接收的 sheetname 参数作为 sheetname 的值,add_sheet 函数将会返回创建的这个 sheet 对象,代码写为:

sheet1 = workbook.add_sheet(sheetname=sheetname)
1
接收完参数后,我们可以使用 for 循环将传递过来的列名 column_name_list 在该 sheet 上进行设置:

for i in range(0,len(column_name_list)):
sheet1.write(0,i,column_name_list[i])
1
2
以上代码中 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
1
2
3
4
5
6
7
最后使用 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)))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
此时已经完成了主要功能的编写,那么接下来就应该接受用户输入 文件路径、文件保存路径、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)
1
2
3
4
5
6
7
8
9
此时运行 day2.py 文件,输入完所需内容将会出现成功提示:

随后在保存的文件中可以看到提取出来的信息:

————————————————
版权声明:本文为CSDN博主「1_bit」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/A757291228/article/details/117464313

免责声明:
本工作室所有程序与文章均为游戏爱好者自发进行共同探讨研究为目的。
所有买家自愿赞助的费用全部用于服务器、网络租赁与维护、更新等费用,本工作室完全没有任何赢利性商业行为。
本工作室提到的所谓“购买”、“充值”、“续费”等实质为赞助方式,并非商业用语所指的行为模式。
如果对阁下(任何个人、单位、团体、机关、企事业单位等)产生冒犯或者侵害,请您立即告知我们,我们将改正模式。
海神科技 » 10个python办公黑科技

独家打造,全球唯一,每个细节我们都用心处理!

24小时自动发卡 联系QQ在线客服