如何使用python屏蔽输入并显示最后4位数字

2024-09-24 02:21:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我在制作这个程序时遇到了麻烦。 我需要的是一个程序,它将询问用户卡的数量,示例输入如下:

in1 = '1234 4214 1521 5132'
in2 = '52310259 1269102392'

输出应如下所示:

^{pr2}$

它应该显示输入的最后4位数字。你们能帮我用python编写这个程序吗。在

谢谢你的帮助


Tags: 用户程序示例数量数字pr2in1in2
3条回答

也可以使用regex,例如:

import re
p= re.compile(r'(\d{4})$')

Try it online!

import re

def mask(string, digits_to_keep=4, mask_char='x'):

    num_of_digits = sum(map(str.isdigit, string))
    digits_to_mask = num_of_digits - digits_to_keep
    masked_string = re.sub('\d', mask_char, string, digits_to_mask)
    return masked_string

这样可以得到:

^{pr2}$

你可以这样做:

credit1 = '1234 4214 1521 5132'
credit2 = '52310259 1269102392'

s = credit1[-4:].rjust(len(credit1), '*')
print(s)
s = credit2[-4:].rjust(len(credit2), '*')
print(s)

您得到的输出是:

^{pr2}$

另一种使用regex的解决方案:

import re
print(re.sub('\d', '*', credit1[:-4]) + credit1[-4:])
print(re.sub('\d', '*', credit2[:-4]) + credit2[-4:])

将保留空格,输出为:

**** **** **** 5132
******** ******2392

编辑 用户希望保留k位数的解决方案:

import re
k = 7
c1 = len(re.sub("[^0-9]", "", credit1)) - k
c2 = len(re.sub("[^0-9]", "", credit2)) - k

print(re.sub('\d', '*', credit1, c1))
print(re.sub('\d', '*', credit2, c2))

k=3/4/5/6/7的输出是:

**** **** **** *132
******** *******392

**** **** **** 5132
******** ******2392

**** **** ***1 5132
******** *****02392

**** **** **21 5132
******** ****102392

**** **** *521 5132
******** ***9102392

相关问题 更多 >