python sentence =“我不要冰,我要冰”

r1wp621o  于 2022-12-21  发布在  Python
关注(0)|答案(3)|浏览(77)

我想让结果说“而不是冰,我想要比萨饼”。我只能想出如何替换所有出现的“冰”,而不是只替换最后一个。我试图通过索引和切片来做到这一点,但我不能想出,解释将非常感谢。

def replace_last_word(sentence, old, new):
    if sentence.endswith(old):
        i = sentence.index(old)
        new_sentence =  (sentence[:i] + new)
        return new_sentence
    return sentence

print(replace_last_word("Instead of ice i want ice", "ice", "pizza"))
yrdbyhpb

yrdbyhpb1#

可以使用负步长切片来反转字符串,然后利用字符串.replace()方法的count参数:

def replace_last_word(sentence, old, new):
    return sentence[::-1].replace(old[::-1], new[::-1], 1)[::-1]

然后,您的程序应打印:

'Instead of ice i want pizza'

如果句子不以关键字结尾,也可以使用:
一个二个一个一个

gudnpqoy

gudnpqoy2#

使用rindex(而不是index)从末尾开始搜索。

i = sentence.rindex(old)

如果要替换的字符串不总是在末尾,则必须追加剩余的切片。

def replace_last_word(sentence, old, new):
    i = sentence.rfind(old)
    if i != -1:
        sentence = sentence[:i] + new + sentence[i+len(old):]
    return sentence
62lalag4

62lalag43#

通过将句子转换为单词列表检查旧单词是否存在于单词列表中从结尾迭代到开始如果存在,则更改该单词并中断循环,如果不存在,则打印相同的句子

    • 代码:-**
def replace_last_word(sentence, old, new):
    sentence=sentence.split()
    for i in range(len(sentence)-1,-1,-1):
        if sentence[i]==old:
            sentence[i]=new
            break
    return " ".join(sentence)

print(replace_last_word("Instead of ice i want ice", "ice", "pizza"))

相关问题