记录一下这两天在处理文档时遇到的小问题。
第一个任务是读取两个文件,一个存放了很多正则表达式,另一个是要修改的excel文件。
读取已有的正则,然后挨个到excel里匹配并替换。
第一个问题报了
re.error: bad character range -\d at
搜了,说是:re分割字符串时,所用的分隔符集合必须按其ASCII值的大小,从小到大排列
记一下……本人正则小白,也就这两天搞会了。 或许过两天又忘了
第二个问题,测试了说结果不准确
原来的代码是:
keyword_pattern = '|'.join(map(re.escape, rule_keyword)) #多个正则分开
keyword_pattern = re.compile(keyword_pattern) #正则编译
matches = test_df['title'].str.contains(keyword_pattern, regex=True, na=False) #筛选
然后我仔细查看了需求,文档里要求的意思其实是每一条对应的规则,包含规则里所有的字。
于是改成了下面这样:
for keys in rule_keyword:
flag = 1
is_match = test_df['title'].str.contains(keys,regex=False, na=False)
if is_match is True:
flag *= 1
else:
flag *= 0
# 在每一个规则里面找,但凡有一个不符合,flag=0,即不符合
if flag == 1:
new_clos = new_clos._append({'cate_id':rule_category_id,'cate_name':rule_category_name}, ignore_index = True)
for循环来判断每一个字是不是都在,在就是1,不在就是0,都乘起来,但凡有一个不在,就不符合要求。
后面运行的时候又不能读取文件,它报
No such file or directory
先以为是xlrd版本的问题,安装了xlrd1.2.0还是不行,就算在同一文件夹下也得填上绝对路径。