[英]Replacing index range in String with certain character - Python
我试图用“#”替换整个字符串,除了最后 4 个字符。
下列:
def maskify(cc):
c2 = cc.replace(cc[:-4], '#')
return c2
print(maskify('TestName'))
结果是:
#Name
我希望它返回:
####Name
我在这里做错了什么? 谢谢
对于更简单的解决方案,您可以改为在字符串的最后4
字符上使用rjust
,并用#
填充到其原始长度:
s = 'TestName'
s[-4:].rjust(len(s), '#')
'####Name'
您的函数的问题在于,您必须重复要使用的元素来替换尽可能多的替换元素。 所以你应该这样做:
def maskify(cc):
c2 = cc.replace(cc[:-4], '#'*len(cc[:-4]))
return c2
yatu 使用rjust()
的解决方案看起来不错,但str.replace()
是一个错误的朋友。 它适用于a reasonably varied string
,但如果元素在 string 中重复,它可能会失败(这是 yatu 的第二个解决方案):
def maskify(cc):
c2 = cc.replace(cc[:-4], '#'*len(cc[:-4]))
return c2
print(maskify('12121212'))
给,
########
我建议像这样“构建”新字符串,
def maskify(cc):
mask = '#' * (len(cc)-4)
return mask+cc[-4:]
这给出了想要的结果,
####1212
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.