为什么这个函数没有返回替换的结果?
def replacechar(str):
str.replace("č","c")
str.replace("a","y")
return str
p= "abcdč"
replacechar(p)
print(p)
输出:
abcdč
答案 0 :(得分:5)
str.replace
不是一个就地操作。它返回一个字符串。好消息是,您的功能将以最小的修改工作。
def replacechar(string):
return string.replace("č","c").replace("a","y")
接下来,您需要将返回值分配回p
:
p = replacechar(p)
另外,请勿使用str
命名对象,因为您已经拥有该名称的内容。
或者,您考虑过str.translate
吗?
_TAB = str.maketrans({'č' : 'c', 'a' : 'y'})
def replacechar(string):
return string.translate(_TAB)
答案 1 :(得分:3)
replace()
返回字符串的副本,其中旧的出现已被new替换。
str.replace
分配回str
才能返回更新后的字符串。
但是在上面的函数中,你不会覆盖变量str
。
def replacechar(str):
str = str.replace("č","c")
str = str.replace("a","y")
return str
p= "abcdč"
print replacechar(p)
print(p)
输出:
ybcdc
abcdč