繁体   English   中英

用特定字符替换字符串中的索引范围 - Python

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM