作者:1234567山02 | 来源:互联网 | 2023-09-24 17:19
我在制作此程序时遇到麻烦。
我需要的是一个程序,该程序将询问用户卡号,示例输入如下:
in1 = '1234 4214 1521 5132'
in2 = '52310259 1269102392'
输出应如下所示:
'xxxx xxxx xxxx 5132'
'xxxxxxxx xxxxxx2392'
它应该显示输入的最后4位数字。你们可以使用python帮助我完成此程序吗?
不胜感激
您可以执行以下操作:
driver_avg_ratings=4.38
您得到的输出是:
rider_avg_ratings=1.25
使用正则表达式的另一种解决方案:
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
修改
用户希望保留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))
,
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
这给出了:
>>> mask(in1)
'xxxx xxxx xxxx 5132'
>>> mask(in1,6)
'xxxx xxxx xx21 5132'
>>> mask(in2)
'xxxxxxxx xxxxxx2392'
,
这是另一种方法。您需要从末尾开始迭代字符串,以查找最后四位数字并将它们原样放置在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 <4:
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))
这将返回:
XXX XXXX XXXX 5132
XXXXXXX XXXXXX2392
您还可以设置要在numOfDigits
参数中显示的位数。
,
您还可以使用如下正则表达式:
import re
p= re.compile(r'(\d{4})$')
Try it online!