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

如何使用python屏蔽输入并显示最后4位数字,python,Python,我做这个程序有困难。 我需要的是一个程序,它将询问用户卡的号码,示例输入如下: in1 = '1234 4214 1521 5132' in2 = '52310259 1269102392' credit1 = '1234 4214 1521 5132' credit2 = '52310259 1269102392' s = credit1[-4:].rjust(len(credit1), '*') print(s) s = credit2[-4:].rjust(len(credit2),

我做这个程序有困难。 我需要的是一个程序,它将询问用户卡的号码,示例输入如下:

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

s = credit1[-4:].rjust(len(credit1), '*')
print(s)
s = credit2[-4:].rjust(len(credit2), '*')
print(s)
输出应如下所示:

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


非常感谢您的帮助

您可以这样做:

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

s = credit1[-4:].rjust(len(credit1), '*')
print(s)
s = credit2[-4:].rjust(len(credit2), '*')
print(s)
您得到的输出是:

***************5132
***************2392
使用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

这里有另一种方法。您需要从头开始迭代字符串,以便找到最后四位数字,并按原样将它们放入
result
。对于其余数字,您可以放置一个
X
标记:

def showLastDigits(string, numOfDigits):
    result = []
    counter = 0
    for i in range(len(string)-1,-1,-1):
        if string[i] == ' ':
            result.append(string[i])
        elif string[i].isdigit() and counter < numOfDigits:
            result.append(string[i])
            counter += 1
        else:
            result.append('X')
    return "".join(result[::-1])

test1 = "1234 4214 1521 5132"
test2 = "52310259 1269102392"

print(showLastDigits(test1,4))
print(showLastDigits(test2,4))

您还可以使用
numfodigits
param设置要显示的位数。

您还可以使用正则表达式,如:

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

这使得:

>>> mask(in1)
'xxxx xxxx xxxx 5132'

>>> mask(in1, 6)
'xxxx xxxx xx21 5132'

>>> mask(in2)
'xxxxxxxx xxxxxx2392'

到目前为止,你尝试了什么?到目前为止,我仍在试图找出如何使这个程序工作。我现在有一个这样的代码
number=input()count=len(number)-number.count(“”)如果count==16或count==20:对于范围内的i(len(number)-number.count(“”)):
空格可以出现在字符串中的任何地方吗(例如
'12344141515132'
甚至
'12344141521513 2'
)?@DavidS运行
re.sub(“\d',“*”,credit1[:-6])+credit1[-6:][/code>返回
“*********1 5132”
,它只显示5位数字。@DavidS注意,这个问题询问如何显示最后4位数字,而不是字符。@EliadL添加了用户想要使用它时的选项