-1

Iのような文では、他のものではなく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?'

もちろん、 1文字を置き換えた場合にのみ機能することに注意してください...

于 2012-09-01T15:19:29.563 に答える