Python:使用while循环迭代字符串

时间:2013-09-05 08:58:39

标签: python string while-loop

我试图删除最后一次出现' +'后字符串末尾的所有字符。所以,例如,如果我的字符串是'母亲+为什么+是+ + +河+笑'我想把这个减少到母亲+为什么+是+ +河流'。我不知道该字符串将提前是什么。

我想过在字符串上向后迭代。类似的东西:

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

这不会起作用,因为信件没有预先定义。

有什么想法吗?

1 个答案:

答案 0 :(得分:7)

只需使用str.rsplit()

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

.rsplit()从字符串的 end 分割出来;限制为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()相比,效率相当低;为每个删除的字符创建一个新字符串是很昂贵的。