【问题标题】:str.replace won't work within a functionstr.replace 在函数中不起作用
【发布时间】:2018-01-25 14:50:45
【问题描述】:

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

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

输出:

abcdč

【问题讨论】:

  • 您只需将其分配回str(顺便说一句,这是一个非常糟糕的变量名)

标签: python string python-3.x replace


【解决方案1】:

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)

【讨论】:

    【解决方案2】:

    replace() 返回字符串的副本,其中出现的 old 已替换为 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č
    

    【讨论】:

    • 谢谢!这就是我想知道的。
    • @cvizrada 如果这是你想知道的,那么Ev. Kounis' 评论说的。
    • 不幸的是,我不知何故错过了他在通知中的评论,所以我首先看到了这个。我是新来的,对不起。
    • @cvizrada 作为答案,这可能会解释什么是错误的,但它是不完整的,因为它不能解决您的代码的所有问题。
    • @hope94 我说的是这个答案,没有提到这些问题。你现在很好!
    猜你喜欢
    • 2018-09-11
    • 2014-04-17
    • 2019-08-24
    • 2021-12-05
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 2015-11-01
    相关资源
    最近更新 更多