2012-09-01 72 views
-1

everybody! eat! eat eat eat!這樣的句子我只需要最後的!被替換,而不是其他的。如何替換python中最後一個文本字符串的特定實例?

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: ") 
+3

如果有什麼後,更多的是文字? –

+0

這是功課嗎?看起來很像剛剛發佈的http://stackoverflow.com/questions/12229269/python-replacing-issue – Levon

回答

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 
+1

爲什麼沒有評論投票呢? upvoting補償雞BS! –

+0

downvotes沒有解釋是毫無價值的,*沒有人*得到任何他們。 – Levon

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

結果

everybody! eat! eat eat eat? 

編輯:

Works的話,太:

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!' 
+0

創意! +11111 – georg

+0

感謝bro!我真的很感激<3 –

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!' 

會吞噬了多個後!!!

0

的字符串的方法replace有一個可選的參數讓你決定你想要多少次更換。至於要更換你的最後一個,只是扭轉串

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

需要注意的是,如果你更換一個單個字符,當然只能...

相關問題