在像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: ")
答案 0 :(得分: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!'
答案 1 :(得分: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!'
会吞噬多个尾随!!!
答案 2 :(得分: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
答案 3 :(得分:0)
字符串方法replace
采用可选参数,让您决定要替换的次数。如您想要替换最后一个,只需反转字符串
>>> s = "hey! hey! hey! hey!"
>>> s[::-1].replace("!","?",1)[::-1]
'hey! hey! hey! hey?'
请注意,仅当您替换一个单个字符时才有效...