屏蔽python中的数字和字符

时间:2019-07-05 13:52:37

标签: python-3.x

如何屏蔽数字而不影响数据中的字符和连字符。 我尝试了这个基本代码

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  

1 个答案:

答案 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