-1

在像everybody! eat! eat eat eat!我这样的句子中,只需要!替换最后一个,而不需要替换其他的。

q = raw_input("English: ")
qq = str(q.isspace())
e = ''
while q != e:
    q =q.replace("i", "ee")
    q =q.replace("!", ". bork bork bork!")
    q =q.replace("th","z")
    print q
    q = raw_input("English: ")
4

4 回答 4

3
s = "everybody! eat! eat eat eat!"  
s[::-1].replace("!", "?", 1)[::-1]

结果是

everybody! eat! eat eat eat?

编辑:

也适用于文字:

s[::-1].replace("tae", "knird", 1)[::-1]
# => 'everybody! eat! eat eat drink!'

编辑2:

我想你应该已经明白了:

s[::-1].replace("eat"[::-1], "drink"[::-1], 1)[::-1]
# => 'everybody! eat! eat eat drink!'
于 2012-09-01T15:17:56.853 回答
2

更新

使用rstrip()

s = "everybody! eat! eat eat eat!"  
s[:-1]+s[-1].rstrip('!')+'. bork bork bork!' # updated

给出:

'everybody! eat! eat eat eat. bork bork bork!'

假设之后没有任何内容!(无论哪种方式都没有真正指定)。rstrip()将吞噬尾随!,我们将替换文本连接到字符串的末尾。

更新防止了多个尾随!!!全部被条带化,使用切片表示法,我们只剥离最后一个字符,如果它是!.

以前的解决方案

 s.rstrip('!')+'. bork bork bork!' 

会吞噬多个尾随!!!

于 2012-09-01T15:18:03.370 回答
0

最简单的方法是使用正则表达式:

s = 'everybody! eat! eat eat eat!'

import re
print re.sub(r'!([^!]*)$', r'?\1', s)

仅使用字符串函数:

p = s.rpartition('!')
if p[1]:
    s = p[0] + '?' + p[2]
print s
于 2012-09-01T15:17:12.250 回答
0

string 方法replace接受一个可选参数,让您决定要替换多少次。当你想替换你的最后一个时,只需反转字符串

>>> s = "hey! hey! hey! hey!"
>>> s[::-1].replace("!","?",1)[::-1]
'hey! hey! hey! hey?'

请注意,它仅在您替换一个字符时才有效,当然......

于 2012-09-01T15:19:29.563 回答