2017-01-25 13 views
-5

こんにちは私はそのタイトルがすべてそうだと思います。例えば最後の文を除くセンテンスから感嘆符を削除するには

私のような文字列がある場合:"The food! is great!!!"

を私はPythonがそれを変更したい:"The food is great!"

は、事前にすべてのいただきありがとうございます。 :)

+4

は、自分はまだ何もしようとしたことがありますか?どこで立ち往生しましたか? –

+0

あなたの文字列はいつも終わりますか?そこには常に4つありますか? – depperm

+0

@deppermいいえ、必ずしも終わるとは限りません!そして数!ランダムです。 – ThodorisN

答えて

2

あなたが先読みで正規表現を使用することができます。

import re 

re.sub(r'!+(?=.*\!)','',text) 

正規表現

!+(?=.*\!) 

は先読み(?=.*\!)は、感嘆符を見て与えられた感嘆符のいずれかの配列をマッチさせます。これらの感嘆符はすべて、空の文字列によって置換されたsubです。

$ python2 
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import re 
>>> text="The food! is great!!!" 
>>> re.sub(r'!+(?=.*\!)','',text) 
'The food is great!' 
+2

これは、OPやそのようなものを検索する人のためにあまりにも進んだと思う –

+0

はい、しかしそれは有効な解決策です – depperm

+3

@ Ev.Kounis:よく個人的に私はregexesは非常にエレガントなツールだと思う*カーテンの後ろでどのように動作するか心配する必要はありません。さらにそれは私の意見ではdvの理由ではない:それは機能的に正確であり、答えは起こっていることを説明する。 –

-1

すべてを '!'に置き換えます。 ''の文字列で文字列=文字列+ '!'

string.replace('!','') 
string = string + '!' 
+1

文字列が!で終わる場合にのみ機能します。 –

+0

@JacquesdeHoogeどういう意味ですか?これは実際にはスマートな解決策です –

+0

もし彼の文字列が!で終わっていなければ、!そこにはいけないことが追加されています。それはどのように賢いですか?また、唯一の!中間にいるかもしれません... –

2
strs="The food! is great!!!" 
count=strs.count("!")-1 
strs = strs.replace('!','',count) 
print strs 

https://stackoverflow.com/a/16268024/6626530

出力

The food is great! 
+4

あなたはなぜ最後の交換をしますか? –

+0

@Willem Van Onsemあなたは正しいです、最後に取り替える必要はありません、それを更新しました – Shijo

+0

なぜダウン投票? – Shijo

関連する問題