【问题标题】:Why is replace() method not working properly but string splicing works为什么 replace() 方法不能正常工作但字符串拼接工作
【发布时间】:2021-10-15 19:42:03
【问题描述】:

最近我遇到了一个我无法理解的错误输出。

我正在解决一个问题,如果字符串中的前一个字符按字母顺序在当前字符之前,那么我必须将当前字符大写。另一方面,如果当前字符按字母顺序在前一个字符之前,则当前字符小写。如果两者相同,则无需执行任何操作。

例如:

Input : ab cB GG
Output : aB cb GG

这是我的代码:

def transformSentence(sentence):
    for i in range(len(sentence)):
        s = sentence[i]
        p = sentence[i-1]
        if i ==0 or s == ' ' or p == ' ':
            continue
        if s == p:
            continue
        elif ord(s.lower()) > ord(p.lower()):
            sentence = sentence.replace(sentence[i], sentence[i].upper())

        elif ord(s.lower()) < ord(p.lower()):
            sentence = sentence.replace(sentence[i], sentence[i].lower())
    return sentence

print(transformSentence('ab cB GG'))

我得到的这个代码块的输出是:

ab cb GG

如果您注意到上面的输出,第二个 elif 块中的 replace() 有效! (大写的 b 改为小写,因为它在 c 的首字母前面)

当我使用 string slicingconcatenation 而不是下面的 replace() 时,它在两个块上都可以完美运行并给我预期的输出:

sentence = sentence[:i] + sentence[i].upper() + sentence[i+1:]

我需要知道为什么 replace() 方法在第一个 elif 块中不起作用但在第二个块中起作用。

【问题讨论】:

  • replace 替换字符串的所有次出现,而不仅仅是您指定的索引处的那个。
  • replace(sentence[i],...) 表示 替换 每个 sentence[i]给出的字符串的出现
  • 感谢您澄清@schwobaseggl 和@khelwood。有什么方法可以使用 replace 方法获得所需的输出?
  • 不,replace不适合这个操作。

标签: python string replace str-replace


【解决方案1】:

替换已经更新了句子中所有地方的字母。

【讨论】:

  • 感谢@Reena 的澄清。您能告诉我如何使用 replace 方法获得所需的输出吗?
猜你喜欢
  • 2020-06-20
  • 2020-03-28
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-30
  • 2023-04-09
相关资源
最近更新 更多