首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用“#”更改字符串的各个部分

使用“#”更改字符串的各个部分
EN

Stack Overflow用户
提问于 2015-07-17 17:33:31
回答 9查看 1.9K关注 0票数 1

想看看我是不是走对方向了。我必须将字符串中除最后四个字符以外的所有字符都改为#。到目前为止,我有两个想法。

第一个:

代码语言:javascript
复制
def maskify(cc):
   cc = raw_input("Enter passcode: ")
   n = len(cc)
   cc.replace(cc[0:n-4], #)  # this one gives me the unexpected EOF while parsing error

第二个(我认为这个比较接近,因为它应该需要一个算法):

代码语言:javascript
复制
def maskify(cc):
   cc = raw_input("Enter passcode: ")  
   n = len(cc)
   for i in range (0, n-4):  # i think a for loop would be good but i don't know how i'm going to use it yet
      cc.replace(                  #not entirely sure what to put here
   pass                           
EN

回答 9

Stack Overflow用户

发布于 2015-07-17 17:40:02

代码语言:javascript
复制
cc = raw_input("Enter passcode: ")
cc = ''.join(('#' * (len(cc) - 4), cc[-4:]))
票数 3
EN

Stack Overflow用户

发布于 2015-07-17 17:37:10

第一个示例中的问题是#未加引号。您需要将其更改为'#',否则它将被解析为注释的开头,而括号是该注释的一部分。尽管如此,这只能修复解析错误。

字符串的问题是不能更改其中的字符(它们是immutable)。解决此问题的一种常见方法是创建一个字符串数组,更改要更改的字符,然后将数组转换回字符串(通常使用''.join(character_array))。试试看!

票数 2
EN

Stack Overflow用户

发布于 2015-07-17 17:42:14

下面的内容如何?

代码语言:javascript
复制
def maskify() :
    cc = input("Enter passcode: ")
    mask = '#'*(len(cc)-4)
    return mask + cc[-4:]

我不确定程序的其余部分是如何工作的,但我怀疑您是否应该在此函数中提示输入raw_input。你可以根据你的需要来决定。另一种方法如下所示:

代码语言:javascript
复制
def maskify(cc) :
    return '#'*(len(cc)-4) + cc[-4:]

myInput = input("Enter passcode: ")
maskedInput = maskify( myInput )

  • NB: python2不使用input

而使用raw_input

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31472664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档