0

我试图在最后一次出现“+”之后删除字符串末尾的所有字符。例如,如果我的字符串是“Mother+why+is+the+river+laughing”,我想将其简化为“Mother+why+is+the+river”。我不知道字符串会提前是什么。

我想在字符串上向后迭代。就像是:

while letter in my_string[::-1] != '+':
    my_string = my_string[:-1]

这不起作用,因为未预先定义输入的字母。

有什么想法吗?

4

1 回答 1

7

只需使用str.rsplit()

my_string = my_string.rsplit('+', 1)[0]

.rsplit()从字符串的末尾拆分;限制为 1 它只会+在字符串中的最后一个拆分,并在最后[0]一个之前为您提供所有内容+

演示:

>>> 'Mother+why+is+the+river+laughing'.rsplit('+', 1)[0]
'Mother+why+is+the+river'

如果字符串中没有 +,则返回原始字符串:

>>> 'Mother'.rsplit('+', 1)[0]
'Mother'

至于你的循环;您正在针对反转的字符串进行测试,并且条件返回True,直到最后一个+被删除;您必须在循环中测试您刚刚删除的字符:

while True:
    last = my_string[-1]
    my_string = my_string[:-1]
    if last == '+':
        break

但这与使用相比效率很低str.rsplit();为删除的每个字符创建一个新字符串的成本很高。

于 2013-09-05T08:59:42.570 回答