【问题标题】:Python 2.7: replace method of string object deprecatedPython 2.7:不推荐使用字符串对象的替换方法
【发布时间】:2023-03-24 22:25:01
【问题描述】:

我的“同事”刚刚告诉我,字符串对象的替换方法已被​​弃用,将在 3.xx 中删除。

请问你是不是真的,为什么,如果是,如何替换它(用例子)?

非常感谢。

【问题讨论】:

  • help(str.replace) 没有显示弃用说明。你就不能问问你的同事是从哪里弄来的吗?
  • 在您能看到权威来源的信息之前,不要相信任何人告诉您的任何事情。

标签: python


【解决方案1】:

3.2 的documentation 没有说明应该删除 str 类型的 replace 方法。我也看不出有人应该这样做的理由。

删除的是string 模块中的替换功能。

一个例子:

"bla".replace("a", "b")

调用str类型的replace方法。

string.replace("bla", "a", "b")

调用字符串模块的替换函数。

也许这就是你的同事搞混的。在 Python 中使用字符串模块函数是一种非常非常古老的方法。从 Python 2.0(!) 开始不推荐使用它们。我对 Python 的历史不太了解,但我猜他们在语言中引入了面向对象的概念时可能是对的。

【讨论】:

  • 啊,同事,同事...谢谢您的回答。我敢肯定他们正在使用一种非常古老的方式进行编码。
  • 好答案。我还要说 `"bla".replace("a", "b") 也可以重写为 str.replace("bla", "a", "b"),也许这就是问题的根源.
【解决方案2】:

据我了解 http://docs.python.org/library/string.html#deprecated-string-functions 中的那些弃用警告,只有函数被弃用。方法不是。

例如如果你使用:

s = 'test'
string.replace(s, 'est', '')

你应该把它替换为

s.replace('est', '')

【讨论】:

    【解决方案3】:

    为此,您可以使用以下代码:

        a = "hello".replace("e", "o")
        print(a)
    

    这可能应该是输出

        hollo
    

    【讨论】:

    • 您好,欢迎来到stackoverflow!在回答问题时请记住,您的答案需要在现有答案的基础上增加重要知识,因此在这种情况下,dmeister 已经提供了这个答案(并且它被接受为有效),这个答案也没有提到 .replace 是否在3x+,这是最初的问题。谢谢,再次欢迎来到 SO!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 2012-09-25
    相关资源
    最近更新 更多