如何屏蔽数字而不影响数据中的字符和连字符。 我尝试了这个基本代码
def maskif(cc):
if len(cc) <= 6:
return cc
if cc==[]:
return []
if len(cc) >6:
# dd=cc.replace('-','')
if cc.isdigit():
print (cc[:1] + '#' * (len(cc)-5) + cc[-4:])
elif not cc.isdigit():
dd=cc.replace('-','')
print (dd[:1] + '#' * (len(dd)-5) + dd[-4:])
print(dd)
else:
print('int')
else:
print('valid')
我的输入和输出应该是:
A234-2345-3456-ABCD ----- A###-####-####-ABCD
ABCD-EFGH-IJKLM-NOPQ ------ ABCD-EFGH-IJKLM-NOPQ
4556-3646-0793-5616 ----- 4###-####-####-5616
A1234567BCDEFG89HI------A#######BCDEFG89HI
答案 0 :(得分:3)
您可以使用re.sub
查找并替换数字:
data = ['A234-2345-3456-ABCD',
'ABCD-EFGH-IJKLM-NOPQ',
'4556-3646-0793-5616',
'A1234567BCDEFG89HI']
import re
def mask(cc):
return cc[:1] + re.sub(r'\d', r'#', cc[1:-4]) + cc[-4:]
for d in data:
print(mask(d))
打印:
A###-####-####-ABCD
ABCD-EFGH-IJKLM-NOPQ
4###-####-####-5616
A#######BCDEFG89HI