背景:日志中有打印出明文密码,需要将密码不分替换为*
关键语句就一条:
re.sub(r'--password .? ', '--password * ', line)
用途是,找到--password关键字,然后替换后面两个空格之间的内容为
import re
def log_mask(self):
raw_file = self.LOG_PATH + self.logfile_name + '_tmp.log'
mask_file = self.LOG_PATH + self.logfile_name + '.log'
with open(raw_file, "r", encoding="utf-8") as f1, open(mask_file, "w", encoding="utf-8") as f2:
for line in f1:
f2.write(re.sub(r'--password .*? ', '--password * ', line))
os.remove(raw_file)
如果打算用相同的模式执行重复替换,可以考虑先将模式编译以获得更好的性能。
实例:
import re
text='今天是:11/28/2018'
datepat=re.compile(r'(d+)/(d+)/(d+)')
print(datepat.sub(r'3-1-2',text))
print(text)
实例2
把大于两个以上的换行替换为两个换行
pat = re.compile(r'
+')
result = pat.sub('
', result)