我试图删除最后一次出现' +'后字符串末尾的所有字符。所以,例如,如果我的字符串是'母亲+为什么+是+ + +河+笑'我想把这个减少到母亲+为什么+是+ +河流'。我不知道该字符串将提前是什么。
我想过在字符串上向后迭代。类似的东西:
while letter in my_string[::-1] != '+':
my_string = my_string[:-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()
相比,效率相当低;为每个删除的字符创建一个新字符串是很昂贵的。