Python为何无法将字符串最后一个字符替换为@?
问题分析与解决方法
你的代码问题出在replace方法的参数上:
- 你写了
str_manip.replace("last_char", "@"),这里的"last_char"是一个字面量字符串,Python会在输入里查找是否有连续的"last_char"这几个字符,找不到就不会做任何替换。 - 你真正想替换的是变量
last_char里存储的最后一个字符,所以要去掉引号,直接用变量名。
不过这里要注意:用replace(last_char, "@")会把字符串中所有和最后一个字符相同的字符都替换成@,比如输入"banana",最后一个字符是a,替换后会变成"b@n@n@",这可能不是你想要的效果。
如果只想替换最后一个字符,更精准的写法是用字符串切片:
str_manip = input("Enter a sentence ") # 取从开头到倒数第二个字符的子串,拼接@ change_char = str_manip[:-1] + "@" print(change_char)
切片str_manip[:-1]会获取原字符串除了最后一个字符之外的所有内容,再加上"@"就刚好替换掉最后一个字符,不会影响前面的任何字符。
如果还是想用replace方法只替换最后一次出现的字符,可以这样写:
str_manip = input("Enter a sentence ") last_char = str_manip[-1] # rfind找到最后一个字符的位置,然后切片拼接 pos = str_manip.rfind(last_char) change_char = str_manip[:pos] + "@" + str_manip[pos+1:] print(change_char)
不过这种写法比切片复杂,推荐直接用切片的方式。
内容的提问来源于stack exchange,提问作者Vee
相关产品推荐
相关产品推荐

