公司加班报销说明自动生成辅助脚本

东方盛慧科技大约 2 分钟爬虫python

公司加班报销说明自动生成辅助脚本

公司每个月加班报销说明 每次都需要手动编写,虽然一个月一次,但是每次需要小心编写仔细核对,比较麻烦,因此写一个小脚本,不算复杂但是很方便

输入文件内容格式

eg:

宋彬彬
2018-06-26
2018-06-27
2018-06-29
2018-07-02
2018-07-03
2018-07-04
2018-07-05
2018-07-06
2018-07-09
2018-07-10
2018-07-11
2018-07-12
2018-07-13
2018-07-19
2018-07-20

雷勋
2018-07-05
2018-07-06
2018-07-09
2018-07-10
2018-07-11
2018-07-12
2018-07-13
2018-07-19
2018-07-20
颜克良
2018-07-06
2018-07-09
2018-07-10
2018-07-11

输出内容格式

不带换行,谁报销的只要再下面内容前面加一个自己的工号就可以了:SXC2010 XXXX(XXXX为下面生成内容)

2018-06-26:宋彬彬 共计1人; 2018-06-27:宋彬彬 共计1人; 2018-06-29:宋彬彬 共计1人; 2018-07-02:宋彬彬 共计1人; 2018-07-03:宋彬彬 共计1人; 2018-07-04:宋彬彬 共计1人; 2018-07-05:宋彬彬、雷勋 共计2人; 2018-07-06:宋彬彬、雷勋、颜克良 共计3人; 2018-07-09:宋彬彬、雷勋、颜克良 共计3人; 2018-07-10:宋彬彬、雷勋、颜克良 共计3人; 2018-07-11:宋彬彬、雷勋、颜克良 共计3人; 2018-07-12:宋彬彬、雷勋 共计2人; 2018-07-13:宋彬彬、雷勋 共计2人; 2018-07-19:宋彬彬、雷勋 共计2人; 2018-07-20:宋彬彬、雷勋 共计2人;

脚本源码

#coding:utf-8
'''
Created on 2018年7月30日

@author: leixun
'''
import sys
def process_file(r):
    nowname = ""
    dict = {}
    result = ""
    for line in r:
        line = line.strip()
        if line.startswith('#') or not len(line):
            continue
        if line.startswith(('2')): ## 必然是21世纪2018-2099 
            if line not in dict or not len(dict[line]):
                dict[line] = nowname
            elif str(dict[line]).endswith('、'):
                dict[line] = str(dict[line])+nowname
            else:
                dict[line] = str(dict[line]) + "、" + nowname
        else:
            nowname = line
    ## 取出按时间大小排序的键名
    keys = dict.keys()
    keys.sort()
    ## 循环拼接报销说明格式
    for key in keys:
        result = result+key+':'+dict[key]+" 共计"+str(str(dict[key]).count('、')+1)+"人; "
    return result

if __name__=="__main__":
    print "start"
    input_file=open(sys.argv[1],'r')
    result = process_file(input_file)
    input_file.close()
    output_file = open("result.txt",'wb')
    print result
    output_file.write(result)
    output_file.close()

命令执行

搭建python环境,新建python文件 复制源码到该文件 然后执行:

python XXX.pyopen in new window(源码文件) xxx(输入文件的名字)

上次编辑于:
贡献者: 雷勋