str.replace在函数中不起作用

时间:2017-08-17 09:05:49

标签: python string python-3.x replace

为什么这个函数没有返回替换的结果?

def replacechar(str):
    str.replace("č","c")
    str.replace("a","y")
    return str
p= "abcdč"
replacechar(p)
print(p) 

输出:

abcdč

2 个答案:

答案 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替换。

必须将{p> 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č