自学了一段时间python,对象这一块看的有点懵,不过大部分逻辑思路,语法什么的都理解了,可以尝试着对工作上的需求进行一个有效的简化工作。 之前在工作中遇到了一个维护需求,就是要统计发文的部门,在这一季度上发了多少文章,这种每次都人工核对实在太麻烦了,所以可以尝试用程序搞定
文章列表的格式比较统一,我的思路将当季的文章拉到文本上,程序截取括号部分的部门名,再统计筛选,这样比较简单 (因为数量不多,而且涉及到接口部分没有直接从页面抓取,网页做了反扒,萌新搞不定)
复制页面列表到文本里面,待处理,名字随便改的,不过到时候跟代码要对应
import datetime #时间库 now_time = datetime.datetime.now().strftime('%Y%m%d') f = open('基层动态发布.txt', encoding='utf-8') data = f.read() #读文件 #print(data) f.close() #关闭文件 import re m = re.findall(r"[【](.*?)[】]", data) str=[] for i in m: a=i.split('、') #、号切开生成新的数组 str.extend(a) #数组加起来 #if m: # print ('%s\n' % (str)) #else: # print ('not match') count='本季度更新总数%d : \n' % (len(str)) print(count) for i in str: n=0 for j in str: n+=1 b = re.findall(r"\S%s" % i, j) #匹配查找有没有重复的长称呼,例如佛山禅城办/禅城办 if b: str[n-1]=i #匹配到就替换字符串,因为数列是从0开始算要减一 #保存为表格 import csv #表格读写库 title = ['部门','发布量'] fcv = open('基层表格%s.csv' % (now_time) , 'w', newline='') f_wt = csv.writer(fcv) f_wt.writerow(title) results = [] myset = set(str) #myset是另外一个列表,里面的内容是str里面的无重复项 for item in myset: result="%s : %s \n" %(item,str.count(item)) print(result) results.append(result) f_wt.writerow([item , str.count(item)]) #写入表格内 f_wt.writerow([len(myset) , len(str)]) #写入表格内 output = open('基层动态统计结果%s.txt' % (now_time) ,'w', encoding='gbk') output.writelines(count) output.writelines(results) #用writelines方法将结果数组添加到新文本上 output.close() #运行后生成表格和文本两个版本文件 fcv.close() input('输入任意字符结束程序:') #阻止程序强退先将必要的库导进来,打开刚刚存储的文档分析 括号部分有的是有多个部门名的,这个也需要截取处理,另外一些名字有简写和长名有重复部分的也做了合并处理 只是如果这个简写跟长名没有重复部分,可能会合并不到,这个如果进一步处理只能自己加一段筛选条件,感觉作用不大 因为要打包成小软件存放,所以最后加了个防止强制退出的一个输入键
功能修改了几次,还算满意,但是新手写的感觉代码有点繁琐,如果有更好的方法欢迎讨论(_)