昨天主要就是写一个脚本去掉征信中的某些敏感字段,这个事情可以分为两步,第一步是找到某个时间点之前的客户的征信报告,几个表联合查询,可以找到当时解析的filename,但是把很多filename放在一个文件夹的时候可能会出现重名的情况,所以move征信报告的时候,可能不是move的当时申请贷款对应的那一份征信报告,所以如果想找到当初那笔贷款所用到的征信报告很难,而且很难准确,而且一个客户有可能三笔贷款,涉及到3次征信报告,那岂不是要弄三份,所以基于这些问题,不需要完全精确,就好比估算一样,任何事情都有时间成本,有些时候估算便可,不需要精确计算。
然后第二步就是把找到的征信报告去掉敏感字段,我想到的有两个方法,第一个是用纯正则表达式的方法,如果正则表达式写得完全正确了(不多匹配不少匹配,应该会经过多次调试),应该是最优的方法,但是文本结构不尽相同,具体的只有边写边调试才能发现困难,或者是解决问题。这个写正则的难点是要匹配中文,涉及很多\n \t等特殊字符,可能需要strip()去掉,正则应该可以写,但是写出来偏复杂,需要多次调试,第二个方法是我去数据库查那些解析出来的信息,然后在原来的html文本中去掉这些解析出来的信息,但是由于第一步所说的move征信的时候存在的问题,所以这个方法可能存在一些小的遗漏,因为不是当时的那份报告,或者也有可能出现,被先前匹配字串删掉主体,残留下一些诸如重庆市这样的文字,我突然想到还有一种方法,这是基于我之前的解析程序,就是对于找到的html,现跑我之前的解析程序,然后用配置文件的方法,找对应的字段,找到字段后,用string.replace()去删除掉,这个方法应该也可以比较完美的解决,但是消耗比较大,要动用以前那一大套解析程序!
目前采用第二种方法解决的问题。
excel复制html源代码进去,居然可以解析,我瞎了!查了下一个单元格应该是可以放下2的15次方个字符,至于这个和字节的关系我没深究,反正放不下html源代码数据。
还接触了一个类似于windows中查找文件的模块,叫glob。
logging模块除了info、warning、debug还有error和critical。
python删除字符串的子串,应该是用替换完成string.replace(‘欲替换的子串’,’替换内容’),还有就是模式替换,用到re模块,re.sub(字符串,模式,’替换内容’)。
最后我还研究了下编码的问题,我发现我上周五的理解是不正确的,昨天的研究就是,代码编码是什么,所写的字符串就什么编码,至于行首的coding:utf-8,这是给解释器说明的,解释器知道编码是什么,如果不一致,比如代码编写用utf-8,其中有某些字符串,而行首是#coding:cp936,则解释器能解释通代码就不会报错(这个检测就好比把代码全转成cp936,如果能转到cp936对应的乱码字符就不会出错,如出现?等通配符不能解析的情况会报错<包括注释>,通不过编译),也就是说只要能通过编译了,输出是什么编码就根据你编写代码所用到的编码来确定;写入windows的文件名必须是gbk编码的,不是说告诉程序写入这样一个文件名的指令,程序就能自动实现转换的(上周就是错在这里),gbk字符串+utf-8字符串,是一个混合型的字符串,格式化unicode变量格式化字符串整个字符串会变成unicode!
psycopg2的cur.fetchall()结果是二维的,list里面套tuple,一个list是一条record,tuple里面是分别的列!
差不多以上!
编码纠正 glob logging replace re.sub 2016.05.30回顾
最新推荐文章于 2022-08-19 21:26:07 发布