【问题标题】:I'm confused by the string method .replace我对字符串方法 .replace 感到困惑
【发布时间】:2017-10-19 14:18:13
【问题描述】:

为什么在第二种情况下我替换字符串的一部分(实际上是一个字母)时会发生这种情况,没有任何变化

in> #first case
in>print('Hello, World!'.replace('l','L'))

out>HeLLo, WorLd!

#second case
a = 'Hello, World!'
a.replace('l','L')
print(a)

out>Hello, World!

【问题讨论】:

  • 因为replace 不会更改现有字符串。它创建一个新版本的字符串并返回它。
  • 理解python字符串是不可变的很重要。
  • 执行此操作 a.replace('l','L') 不会影响您的字符串 'a',正如 Toto 所说,您必须将其分配回您的变量或另一个变量。
  • @polku 当然,虽然通常是正确的,但 CPython 有时会对简单的 += 操作进行优化,这些操作确实会改变字符串 stackoverflow.com/a/25503738/6260170

标签: python replace


【解决方案1】:

您必须将替换的结果分配给变量:

a = 'Hello, World!'
a = a.replace('l','L')
print(a)

【讨论】:

    【解决方案2】:

    Documentation:

    返回字符串 s 的副本,其中所有出现的子字符串 old 都替换为 new。如果给出了可选参数 maxreplace,则替换第一个 maxreplace 出现。

    正如@Toto 已经提到的,您需要返回值。

    【讨论】:

      猜你喜欢
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 2013-07-27
      • 1970-01-01
      • 2020-08-16
      • 2017-03-20
      相关资源
      最近更新 更多